python数据分析之pandas超详细学习笔记(下)

简介: 简介:pandas,python+data+analysis的组合缩写,是python中基于numpy和matplotlib的第三方数据分析库,与后两者共同构成了python数据分析的基础工具包,享有数分三剑客之名。

六、pandas读取和存入csv文件


1、读取文件

file = pd.read_csv('csv文件的路径', encoding='编码格式')  # 编码格式如gbk,utf-8等

2、保存文件

file.to_csv('文件要保存到的路径')


七、pandas合并


1、横向拼接、纵向拼接

  • 新建三个dataframe数据
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.arange(12).reshape((3,4)),columns=['a','b','c','d'])
df2 = pd.DataFrame(np.arange(12,24).reshape((3,4)),columns=['a','b','c','d'])
df3 = pd.DataFrame(np.arange(24,36).reshape((3,4)),columns=['a','b','c','d'])
print(df1)
print(df2)
print(df3)

输出:

   a  b   c   d
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11
    a   b   c   d
0  12  13  14  15
1  16  17  18  19
2  20  21  22  23
    a   b   c   d
0  24  25  26  27
1  28  29  30  31
2  32  33  34  35
  • 实现横向和纵向合并
df4 = pd.concat([df1,df2,df3],axis=0)#纵向合并
df5 = pd.concat([df1,df2,df3],axis=1)#横向合并
print('---------------纵向合并结果---------------')
print(df4)
print('---------------横向合并结果---------------')
print(df5)

输出:

---------------纵向合并结果---------------
    a   b   c   d
0   0   1   2   3
1   4   5   6   7
2   8   9  10  11
0  12  13  14  15
1  16  17  18  19
2  20  21  22  23
0  24  25  26  27
1  28  29  30  31
2  32  33  34  35
---------------横向合并结果---------------
   a  b   c   d   a   b   c   d   a   b   c   d
0  0  1   2   3  12  13  14  15  24  25  26  27
1  4  5   6   7  16  17  18  19  28  29  30  31
2  8  9  10  11  20  21  22  23  32  33  34  35
  • 细心的小伙伴可能已经发现了,纵向合并时,index值看上去不太舒服。可以在上述代码的基础上加以补充,实现index值的改变。
df4 = pd.concat([df1,df2,df3],axis=0,ignore_index=True)  # ignore_index=True的作用是不考虑表原来的index
print(df4)

输出:

    a   b   c   d
0   0   1   2   3
1   4   5   6   7
2   8   9  10  11
3  12  13  14  15
4  16  17  18  19
5  20  21  22  23
6  24  25  26  27
7  28  29  30  31
8  32  33  34  35

2、获取两个表的交集和并集

join参数的属性,如果为’inner’得到的是两表的交集,如果是outer,得到的是两表的并集。

  • 新建两个dataframe数据
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.arange(12).reshape((3,4)),columns=['a','b','c','f'])
df2 = pd.DataFrame(np.arange(12,24).reshape((3,4)),columns=['a','c','d','e'])
print(df1)
print(df2)

输出:

   a  b   c   f
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11
    a   c   d   e
0  12  13  14  15
1  16  17  18  19
2  20  21  22  23
  • 实现得到两张表的交集和并集
df3 = pd.concat([df1,df2],join='outer',ignore_index=True)
df4 = pd.concat([df1,df2],join='inner',ignore_index=True)
print('------------------并集结果-------------------')
print(df3)
print('------------------交集结果-------------------')
print(df4)

输出:

------------------并集结果-------------------
    a    b   c     f     d     e
0   0  1.0   2   3.0   NaN   NaN
1   4  5.0   6   7.0   NaN   NaN
2   8  9.0  10  11.0   NaN   NaN
3  12  NaN  13   NaN  14.0  15.0
4  16  NaN  17   NaN  18.0  19.0
5  20  NaN  21   NaN  22.0  23.0
------------------交集结果-------------------
    a   c
0   0   2
1   4   6
2   8  10
3  12  13
4  16  17
5  20  21

注意:去并集时,空值的地方用NaN填充

新版本pandas已经删除了join_axes,两个dataframe按照同一列合并的话,可以改用merge


八、pandas合并——merge


  • 用字典新建两个dataframe数据:
import pandas as pd
left = pd.DataFrame({'key1':['K0','K0','K1','K2'],
                     'key2':['K0','K1','K0','K1'],
                     'A':['A0','A1','A2','A3'],
                     'B':['B0','B1','B2','B3']})
right = pd.DataFrame({'key1':['K0','K1','K1','K3'],
                      'key2':['K0','K0','K0','K0'],
                     'C':['C0','C1','C2','C3'],
                     'D':['D0','D1','D2','D3']})
print(left)
print(right)

输出:

  • 使用merge进行合并
  • on: 要加入的列或索引级别名称。 必须在左侧和右侧DataFrame对象中找到。
  • 其中how有四个参数:inner、outer、left、right,默认值是inner。 inner的作用是取交集;
    outer的作用是取并集;
    left的作用是只取左边的表有值的情况;
    right的作用是只取右边的表有值的情况。
    left和rigth的结果是outer的子集。
res_1 = pd.merge(left,right,on=['key1','key2'],how='inner')
res_2 = pd.merge(left,right,on=['key1','key2'],how='outer')
res_3 = pd.merge(left,right,on=['key1','key2'],how='left')
res_4 = pd.merge(left,right,on=['key1','key2'],how='right')
print('-------------------------how的参数取inner的结果--------------------')
print(res_1)
print('-------------------------how的参数取outer的结果--------------------')
print(res_2)
print('-------------------------how的参数取left的结果---------------------')
print(res_3)
print('-------------------------how的参数取right的结果--------------------')
print(res_4)

输出:

-------------------------how的参数取inner的结果--------------------
  key1 key2   A   B   C   D
0   K0   K0  A0  B0  C0  D0
1   K1   K0  A2  B2  C1  D1
2   K1   K0  A2  B2  C2  D2
-------------------------how的参数取outer的结果--------------------
  key1 key2    A    B    C    D
0   K0   K0   A0   B0   C0   D0
1   K0   K1   A1   B1  NaN  NaN
2   K1   K0   A2   B2   C1   D1
3   K1   K0   A2   B2   C2   D2
4   K2   K1   A3   B3  NaN  NaN
5   K3   K0  NaN  NaN   C3   D3
-------------------------how的参数取left的结果---------------------
  key1 key2   A   B    C    D
0   K0   K0  A0  B0   C0   D0
1   K0   K1  A1  B1  NaN  NaN
2   K1   K0  A2  B2   C1   D1
3   K1   K0  A2  B2   C2   D2
4   K2   K1  A3  B3  NaN  NaN
-------------------------how的参数取right的结果--------------------
  key1 key2    A    B   C   D
0   K0   K0   A0   B0  C0  D0
1   K1   K0   A2   B2  C1  D1
2   K1   K0   A2   B2  C2  D2
3   K3   K0  NaN  NaN  C3  D3
  • 加入indicator参数可以查看merge的详细信息
    如:
res = pd.merge(left,right,on=['key1','key2'],how='outer',indicator=True)
print(res)

输出:

  key1 key2    A    B    C    D      _merge
0   K0   K0   A0   B0   C0   D0        both
1   K0   K1   A1   B1  NaN  NaN   left_only
2   K1   K0   A2   B2   C1   D1        both
3   K1   K0   A2   B2   C2   D2        both
4   K2   K1   A3   B3  NaN  NaN   left_only
5   K3   K0  NaN  NaN   C3   D3  right_only

indicator的值也可以是字符串参数,在这种情况下,指标函数将使用传递的字符串的值作为指标列的名称。

  • 以index为链接键需要同时设置left_index= True 和 right_index= True
    如:
res = pd.merge(left,right,left_index=True,right_index=True,how='outer')
print(res)

输出:

  key1_x key2_x   A   B key1_y key2_y   C   D
0     K0     K0  A0  B0     K0     K0  C0  D0
1     K0     K1  A1  B1     K1     K0  C1  D1
2     K1     K0  A2  B2     K1     K0  C2  D2
3     K2     K1  A3  B3     K3     K0  C3  D3
  • sort对链接的键值进行排序:
res = pd.merge(left,right,on=['key1','key2'],how='outer',sort=True)
print(res)

输出:

  key1 key2    A    B    C    D
0   K0   K0   A0   B0   C0   D0
1   K0   K1   A1   B1  NaN  NaN
2   K1   K0   A2   B2   C1   D1
3   K1   K0   A2   B2   C2   D2
4   K2   K1   A3   B3  NaN  NaN
5   K3   K0  NaN  NaN   C3   D3


九、pandas plot 画图函数


import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
data = pd.DataFrame(np.random.randn(1000,4),index=np.arange(1000),columns=['A','B','C','D'])
data = data.cumsum()
print(data.head())
data.plot()
plt.show()

输出:

网络异常,图片无法展示
|

注解:
1、numpy.random.randn():返回一个或一组样本,具有标准正态分布。此处为1000行4列的数据
2、data.head(),获取data的前几个数据,head的默认值为5
3、data.cumsum()的一个作用是可以求累加量


十、 参考文章及学习视频


博文中有一些地方的例子是直接引用学习视频中的例子,卑微博主在线感激!

下面是博主参考的一些其它博文和学习视频。

pandas documentation

pandas快速入门

pandas plot的画图命令

学习视频

参考文章5

参考文章6

参考文章7

参考文章8


十一、Blogger’s speech


如有不足,还请大佬评论区留言或私信我,我会进行补充。

感谢您的支持,希望可以点赞,关注,收藏,一键三连哟。

相关文章
|
8天前
|
数据采集 数据可视化 数据挖掘
Pandas数据应用:天气数据分析
本文介绍如何使用 Pandas 进行天气数据分析。Pandas 是一个强大的 Python 数据处理库,适合处理表格型数据。文章涵盖加载天气数据、处理缺失值、转换数据类型、时间序列分析(如滚动平均和重采样)等内容,并解决常见报错如 SettingWithCopyWarning、KeyError 和 TypeError。通过这些方法,帮助用户更好地进行气候趋势预测和决策。
102 71
|
1月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析的入门指南
本文将引导读者了解如何使用Python进行数据分析,从安装必要的库到执行基础的数据操作和可视化。通过本文的学习,你将能够开始自己的数据分析之旅,并掌握如何利用Python来揭示数据背后的故事。
|
2月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析的入门指南
【10月更文挑战第42天】本文是一篇技术性文章,旨在为初学者提供一份关于如何使用Python进行数据分析的入门指南。我们将从安装必要的工具开始,然后逐步介绍如何导入数据、处理数据、进行数据可视化以及建立预测模型。本文的目标是帮助读者理解数据分析的基本步骤和方法,并通过实际的代码示例来加深理解。
71 3
|
7天前
|
存储 数据采集 数据可视化
Pandas数据应用:电子商务数据分析
本文介绍如何使用 Pandas 进行电子商务数据分析,涵盖数据加载、清洗、预处理、分析与可视化。通过 `read_csv` 等函数加载数据,利用 `info()` 和 `describe()` 探索数据结构和统计信息。针对常见问题如缺失值、重复记录、异常值等,提供解决方案,如 `dropna()`、`drop_duplicates()` 和正则表达式处理。结合 Matplotlib 等库实现数据可视化,探讨内存不足和性能瓶颈的应对方法,并总结常见报错及解决策略,帮助提升电商企业的数据分析能力。
106 73
|
4天前
|
存储 数据采集 数据可视化
Pandas数据应用:医疗数据分析
Pandas是Python中强大的数据操作和分析库,广泛应用于医疗数据分析。本文介绍了使用Pandas进行医疗数据分析的常见问题及解决方案,涵盖数据导入、预处理、清洗、转换、可视化等方面。通过解决文件路径错误、编码不匹配、缺失值处理、异常值识别、分类变量编码等问题,结合Matplotlib等工具实现数据可视化,并提供了解决常见报错的方法。掌握这些技巧可以提高医疗数据分析的效率和准确性。
42 22
|
9天前
|
数据采集 数据可视化 索引
Pandas数据应用:股票数据分析
本文介绍了如何使用Pandas库进行股票数据分析。首先,通过pip安装并导入Pandas库。接着,从本地CSV文件读取股票数据,并解决常见的解析错误。然后,利用head()、info()等函数查看数据基本信息,进行数据清洗,处理缺失值和重复数据。再者,结合Matplotlib和Seaborn进行数据可视化,绘制收盘价折线图。最后,进行时间序列分析,设置日期索引、重采样和计算移动平均线。通过这些步骤,帮助读者掌握Pandas在股票数据分析中的应用。
40 5
|
2月前
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
102 4
数据分析的 10 个最佳 Python 库
|
2月前
|
存储 数据可视化 数据挖掘
使用Python进行数据分析和可视化
本文将引导你理解如何使用Python进行数据分析和可视化。我们将从基础的数据结构开始,逐步深入到数据处理和分析的方法,最后通过实际的代码示例来展示如何创建直观的数据可视化。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。让我们一起探索数据的世界,发现隐藏在数字背后的故事!
|
2月前
|
存储 数据可视化 数据挖掘
Python数据分析项目:抖音短视频达人粉丝增长趋势
Python数据分析项目:抖音短视频达人粉丝增长趋势
|
2月前
|
数据采集 存储 数据可视化
Python数据分析:揭秘"黑神话:悟空"Steam用户评论趋势
Python数据分析:揭秘"黑神话:悟空"Steam用户评论趋势