1.Pandas介绍
pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一
2.Series类型
(1)series类型说明
series就是一种类似于一维数组的对象,他是由一组数据以及一组与其相关的数组标签组成(索引)。仅由一组数据即可产生最简单的series
(2)入门小案例
import pandas as pd from pandas import Series,DataFrame obj=Series([1,2,3,4,5]) print(obj) print(obj.values) print(obj.index)
效果图:
(3)自定义索引
import pandas as pd from pandas import Series,DataFrame obj=Series(['a','b','c','d','e'],index=[1,2,3,4,5]) print(obj)
效果图:
(4)把Series当做字典使用
import pandas as pd from pandas import Series,DataFrame data={'a':10000,'b':20000,'c':30000} obj=Series(data) print(obj) keys=['a','c'] obj1=Series(data,index=keys) print(obj1)
效果图:
3.DataFlame类型
DataFlame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同类型的值(布尔、字符串、数值都可以)
DataFlame本身有行索引也有列索引。
DataFlame可以理解为有Series组成的字典
import pandas as pd from pandas import Series,DataFrame data={ '70年代':['丽丽','张华','小明'], '80年代':['爱国','卫国','美丽'], '90年代':['linda','mary','jack'], } frame_data=DataFrame(data) print(frame_data) print(frame_data['80年代'])
效果图:
扩展案例:
import pandas as pd import numpy as np from pandas import Series,DataFrame dates= pd.date_range('20190301',periods=6) #print(dates) df=pd.DataFrame(np.random.randn(6,4),index=dates,columns=['a','b','c','d']) print(df)
效果图:
注意:
np.random.randn(d0,d1,d2……dn)
1)当函数括号内没有参数时,则返回一个浮点数;
2)当函数括号内有一个参数时,则返回秩为1的数组,不能表示向量和矩阵;
3)当函数括号内有两个及以上参数时,则返回对应维度的数组,能表示向量或矩阵;
4)np.random.standard_normal()函数与np.random.randn()类似,但是np.random.standard_normal()的输入参数为元组(tuple).
5)np.random.randn()的输入通常为整数,但是如果为浮点数,则会自动直接截断转换为整数。
np.random.randn()可以返回一个或一组服从标准正态分布的随机样本值。
4.pandas的层次化索引
层次化索引是pandas的一项比较重要的功能,它能够让你在一个轴上拥有多个索引级别。另一种说法是它能以低维度的形式处理高维度的数据。
import pandas as pd import numpy as np from pandas import Series,DataFrame data=Series(np.random.randn(10),index=[['a','a','a','b','b','b','c','c','d','d'],[1,2,3,4,5,6,7,8,1,2]]) print(data)
效果图:
5.pandas文本格式数据处理
常用方法总结:
read_csv:从文件、url、文件型对象加载带分隔符的数据,默认分隔符为逗号。
read_table:从文件、url、文件型对象加载带分隔符的数据,默认分隔符为' '。
read_fwf:读取固定宽列的格式化数据
(1)read_csv方法使用
<1>读取带表头的csv数据
import pandas as pd import numpy as np from pandas import Series,DataFrame print(pd.read_csv('data1.csv'))
效果图:
<2>读取不带表头的csv数据
没有头部,csv里的数据都是目标数据,则pandas会自动生成一个头部
import pandas as pd import numpy as np from pandas import Series,DataFrame print(pd.read_csv('data1.csv',header=None))
效果图:
(2)read_table方法使用
需要指定分割符为,
import pandas as pd import numpy as np from pandas import Series,DataFrame print(pd.read_table('data1.csv',sep=','))
效果图:
(3)pandas读取excel文件并绘图
import pandas as pd import numpy as np from pandas import Series,DataFrame excel=pd.read_excel('test.xlsx') pl=excel.plot(kind='scatter',x='age',y='price').get_figure() #读取excel表age和price列绘制散点图 pl.savefig('1.png')
效果图:
6.matplotlib库
matplotlib绘图重要的技巧:查看https://matplotlib.org/ 官方文档
(1)绘图的入门案例
import pandas as pd import numpy as np from pandas import Series,DataFrame import matplotlib.pyplot as plt plt.plot(np.arange(10)) plt.show() #显示所绘制的图片
效果图:
(2)绘制子图
import pandas as pd import numpy as np from pandas import Series,DataFrame from numpy.random import randn import matplotlib.pyplot as plt fig=plt.figure() ax1=fig.add_subplot(2,2,1) ax2=fig.add_subplot(2,2,2) ax3=fig.add_subplot(2,2,3) ax4=fig.add_subplot(2,2,4) plt.plot(randn(50).cumsum(),'k--') # 灰色 ax1.hist(randn(100),bins=20,color='k',alpha=0.3) ax2.scatter(np.arange(30),np.arange(30)+3*randn(30)) plt.show()
效果图:
(3)绘图小案例
import pandas as pd import numpy as np from pandas import Series,DataFrame from numpy.random import randn import matplotlib.pyplot as plt x=[1,2,3,4,5] y=[2,4,6,8,10] plt.plot(x,y,linestyle='--',color='#CECECE') # 指定x为横轴,y为纵轴,线的样式、颜色 plt.show()
效果图: