版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python爬虫、数据清洗和数据可视化大数据分析大数据与人工智能技术丛书掌握pandas安装和运行掌握pandas的基本语法了解pandas绘图原理掌握pandas绘图本章学习目标第九章pandas数据分析与清洗掌握pandas读取与清洗数据的方法9.1认识pandaspandas是Python中的一个数据分析与清洗的库,pandas库是基于numpy库构建的。在pandas库中包含了大量的标准数据模型,并提供了高效地操作大型数据集所需的工具,以及大量快速便捷地处理数据的函数和方法,使得以numpy为中心的应用变得十分简单。因为pandas是python的第三方库所以使用前需要安装一下,直接使用命令安装:pipinstallpandas该命令会自动安装pandas以及相关组件。要使用pandas,可以直接在Python命令行中输入以下命令:importpandasaspds=pd.Series()s可得到如下结果:Series([],dtype:float64)什么是pandas?Pandas安装Pandas使用pandas9.2pandas语法与使用在pandas库有两个最基本的数据类型,分别是Series和DataFrame。Series数据类型表示一维数组,与numpy中的一维array类似,并且二者与Python基本的数据结构List也很相近。SeriesDataFrame数据类型则代表二维的表格型数据结构,也可以将DataFrame理解为Series的容器。DataFrameSeries类型Series是是能够保存任何类型的数据(整数、字符串、浮点数、Python对象等)的一维标记数组,并且每个数据都有自己的索引。在pandas库中仅由一组数据即可创建最简单的Series。Series的创建和选择并定义索引【例9-2】创建一个最简单的Series,并定义数据值的索引,代码如下。importpandasaspds=pd.Series([1,2,3,4],index=['a','b','c','d'])s【例9-1】创建一个最简单的Series,代码如下。importpandasaspds=pd.Series([1,2,3,4])s该例通过引入pandas库创建了一个Series一维数组Series类型在pandas中,用户还可以通过索引的方式来选择Series中的某个值。索引的选择(1)选择Series中的某个值【例9-3】选择Series中的某个值,代码如下。importpandasaspds=pd.Series([1,2,3,4],index=['a','b','c','d'])s['a'](2)选择Series中的多个值【例9-4】选择Series中的多个值,代码如下。importpandasaspds=pd.Series([1,2,3,4],index=['a','b','c','d'])s[['b','c']]该例使用语句s[['b','c']]选择了Series中的多个索引值【例9-5】选择Series中表达式的值,代码如下。importpandasaspds=pd.Series([1,2,3,4],index=['a','b','c','d'])s[s>3]该例使用语句s[s>3]选择了在Series中值大于3的数据(3)选择Series中的表示的值Series类型【例9-6】Series中的加法运算,代码如下。importpandasaspds=pd.Series([1,2,3,4],index=['a','b','c','d'])s+3【例9-7】Series中的乘法运算,代码如下。importpandasaspds=pd.Series([1,2,3,4],index=['a','b','c','d'])s*3【例9-8】Series中的布尔运算,代码如下。importpandasaspds=pd.Series([1,2,3,4],index=['a','b','c','d'])'b'ins'w'ins该例用布尔运算来判断是否在数组中存在“b”或者是“w”的索引【例9-9】Series中的多个数组的加法运算,代码如下。importpandasaspds1=pd.Series([1,2,3,4])s2=pd.Series([5,6,7,8])s1+s2Series类型【例9-10】Series中的多个数组的乘法运算,代码如下。importpandasaspds1=pd.Series([1,2,3,4])s2=pd.Series([5,6,7,8])s1*s2【例9-11】Series中的自动补齐不同索引运算,代码如下。importpandasaspds1=pd.Series([1,2,3,4],index=['a','b','c','d'])s2=pd.Series([6,7,8,9],index=['b','c','d','a'])s1+s2【例9-12】Series中的缺失值,代码如下。importpandasaspds1=pd.Series([1,2,3,4],index=['a','b','c','d'])s2=pd.Series([6,7,8],index=['b','c','d'])s1+s2Dataframe类型
DataFrame是一个表格型的数据类型。它含有一组有序的列,每列可以是不同的类型(数值、字符串等)。DataFrame类型既有行索引又有列索引,因此它可以被看作是由Series组成的字典。Dataframe类型【例9-13】创建一个最简单的DataFrame,代码如下。importpandasaspddata={'name':['leslie','amos','bill','bert']'year':['1980','1986','1988',1990]}frame=pd.DataFrame(data)frameDataframe类型【例9-14】创建一个DataFrame,并指定列序列,代码如下。importpandasaspddata={'name':['leslie','amos','bill','bert']'year':['1980','1986','1988',1990]}frame2=pd.DataFrame(data,columns=['year','name'])frame2【例9-15】使用嵌套字典来创建一个DataFrame,代码如下。importpandasaspddata={'name':['leslie','amos','bill','bert']'year':['1980','1986','1988',1990]}pop={'leslie':{1980},'amos':{1986}}frame3=pd.DataFrame(pop)frame3Dataframe类型【例9-16】使用index属性来访问DataFrame的行索引,代码如下。importpandasaspddata={'name':['leslie','amos','bill','bert']'year':['1980','1986','1988',1990]}pop={'leslie':{1980},'amos':{1986}}frame3frame3=pd.DataFrame(pop)frame3.index【例9-17】使用values属性来访问DataFrame的数据,代码如下。importpandasaspddata={'name':['leslie','amos','bill','bert']'year':['1980','1986','1988',1990]}pop={'leslie':{1980},'amos':{1986}}frame3frame3=pd.DataFrame(pop)frame3.valuesDataframe类型【例9-18】使用索引方法和属性来查询DataFrame,代码如下。importpandasaspddata={'name':['leslie','amos','bill','bert']'year':['1980','1986','1988',1990]}frame2=pd.DataFrame(data,columns=['year','name'])frame2'1980'inframe2.columns'name'inframe2.columns【例9-19】建立行索引并查询,代码如下。importpandasaspddata={'name':['leslie','amos','bill','bert']'year':['1980','1986','1988',1990]}frame2=pd.DataFrame(data,columns=['year','name'],index=['one','two','three','four'])frame2'one'inframe2.index'five'inframe2.indexDataframe数据分析与应用实例在DataFrame中的数据分析方法包含有:数据计算、数据扩充、数据索引、数据丢弃、数据排序和数据汇总等。DataFrame中的数据分析方法【例9-20】在pandas中建立二维数据并求和,代码如下。importpandasaspdimportnumpyasnpdf=pd.DataFrame([[1,2,3],[4,5,6]],columns=['col1','col2','col3'],index=['a','b'])dfDataframe数据分析与应用实例数据计算(1)每一列求和
输入命令:df.sum(),可以对每一列求和(2)每一行求和输入命令:df.sum(1),可以对每一行求和(3)每一行做减法输入命令:df-2,可以对每一行做减法运算(4)每一行做乘法输入命令:令df*2,可以对每一行做乘法运算(5)每一行做除法输入命令:df/2,可以对每一行作除法运算Dataframe数据分析与应用实例数据扩充在DataFrame中的常见扩充是对每一列或者每一行进行扩充。【例9-21】在pandas中建立二维数据并进行扩充,代码如下。importpandasaspdimportnumpyasnpdf=pd.DataFrame([[1,2,3],[4,5,6]],columns=['col1','col2','col3'],index=['a','b'])df该程序生成并显示了三列数据,如果要再增加一列,可以输入命令df['col4']=['7','8'],该语句增加了一列col4,并且插入了数据7和8Dataframe数据分析与应用实例重新索引在DataFrame中可以使用方法reindex来重新建立一个新的索引对象。【例9-22】在pandas中建立二维数据并重新建立索引,代码如下importpandasaspdimportnumpyasnpdf=pd.DataFrame([[1,2,3],[4,5,6]],columns=['col1','col2','col3'],index=['a','b'])dfdf=df.reindex['a','b','c','d']df该例首先建立了一个二维数据,接着使用reindex来重新建立索引。并且如果某个索引值不存在就会引入缺失值在DataFrame中可以使用方法drop来丢弃不需要的指定值,并且对原先的数据不会有任何影响。Dataframe数据分析与应用实例数据丢弃(1)丢弃指定值【例9-23】在pandas中建立二维数据并丢弃不需要的某一行值,代码如下。importpandasaspdimportnumpyasnpdf=pd.DataFrame([[1,2,3],[4,5,6]],columns=['col1','col2','col3'],index=['a','b'])dfdf=df.reindex['a','b','c','d']df.drop('a')df(2)丢弃某一列值【例9-24】在pandas中建立二维数据并丢弃不需要的某一列值,代码如下。importpandasaspdimportnumpyasnpdf=pd.DataFrame([[1,2,3],[4,5,6]],columns=['col1','col2','col3'],index=['a','b'])dfdf=df.reindex['a','b','c','d']df.drop(['col3'],axis=1)dfDataframe数据分析与应用实例数据排序在DataFrame中可以使用方法sort_index来对列中数据值进行排序,它将返回一个已经经排好序的新结果。【例9-25】在pandas中建立二维数据并对数据值排序,代码如下。
importpandasaspdimportnumpyasnpdf=pd.DataFrame({'b':[3,5,8,-1],'a':[1,4,3,9]})dfdf.sort_index(by='a')Dataframe数据分析与应用实例数据汇总在DataFrame中可以使用方法idxmin和idxmax来统计达到最小值和最大值的索引,该方法也称为间接索引。其中idxmin统计最小值的索引,idxmax统计最大值的索引。【例9-26】在pandas中建立二维数据并统计,代码如下。importpandasaspdimportnumpyasnpdf=pd.DataFrame([[1,2,3],[4,5,6]],columns=['col1','col2','col3'],index=['a','b'])df(1)统计索引输入命令:df.idxmin()统计最小值索引,df.idxmax()统计最大值索引(2)对数据累加此外,还可以使用方法cumsum进行各行数据值的累加。输入命令:df.cumsum(),可以对每一行的数据进行累加9.3pandas读取与清洗数据csv是以纯文本形式存储的表格数据。本节主要讲述使用pandas读取和操作csv文件中的数据。【例9-27】在pandas中读取外部存储的csv文件,代码如下。importpandasaspdimportnumpyasnpdf=pd.read_csv("3.csv",header=0,)print(df)print(df.dtypes)【例9-28】在pandas中读取含有缺失值的文件。
首先准备含有缺失值的csv文件如下:white,red,blue,pink,black,green,animal1,2,3,4,5,6,cat2,3,6,NA,2,3,dog1,2,5,NULL,7,6,pig2,3,4,NA,2,1,mouse
将其保存为5.csv。(1)直接读取含有缺失值的文件,代码如下:importpandasaspdimportnumpyasnpdf=pd.read_csv("5.csv")print(df)pandas数据清洗pandas数据清洗方法方法名称方法描述cleaned清除所有缺失值dropna根据条件过滤缺失值isnull返回一个布尔值,标明哪些是缺失值fillna填充缺失值数据notnullisnull的否定式在数据采集中经常会出现重复的数据,这时可以使用pandas来进行数据清洗。在pandas中可以使用方法duplicated()来查找重复数据,使用方法drop_duplicated()来清洗重复数据【例9-29】在pandas中处理数据缺失值,代码如下。importpandasaspdimportnumpyasnpframe=pd.DataFrame([[1,2,3,None],[4,7,None,3],[None,None,None,None]])frame在pandas中处理重复数据9.4pandas数据可视化pandas使用一维的数据结构Series和二维的数据结构DataFrame来表示数据,因此相比较于numpy,pandas可以存储混合的数据结构。pandas使用一维的数据结构Series和二维的数据结构DataFrame来表示数据,因此相比较于numpy,pandas可以存储混合的数据结构。同时pandas使用NaN来表示缺失的数据pandas中的绘图函数如下:importpandasaspdimportnumpyasnpfrompandasimportDataFrame,Seriesimportmatplotlib.pyplotasplt此外,根据需要,有时还要引入numpy中的随机数模块:fromnumpy.randomimportrandnpandas数据可视化pandas绘图原理pandas绘图原理【例9-31】在pandas中使用Series绘制线性图,代码如下。frompandasimportDataFrame,Seriesimportpandasaspdimportnumpyasnpimportmatplotlib.pyplotasplts=pd.Series(np.random.randn(10).cumsum(),index=np.arange(0,100,10))s.plot()plt.show()【例9-32】在pandas中使用DataFrame绘制线性图,代码如下。
frompandasimportDataFrame,Seriesimportpandasaspdimportnumpyasnpimportmatplotlib.pyplotaspltdf=pd.DataFrame(np.random.randn(10,4).cumsum(0),columns=['A','B','C','D'],index=np.arange(0,100,10))df.plot()plt.show()pandas绘制柱状图frompandasimportDataFrame,Seriesimportpandasaspdimportnumpyasnpimportmatplotlib.pyplotaspltfig,axes=plt.subplots(2,1)data=pd.Series(np.random.rand(16),index=list('abcdefghijklmnop'))df.plot.bar(ax=axes[0],color='r',alpha=0.7)#垂直柱状图df.plot.barh(ax=axes[1],color='r',alpha=0.7)#水平柱状图plt.show()使用DataFrame绘制柱状图【例9-34】在pandas中使用DataFrame绘制柱状图,代码如下。frompandasimportDataFrame,Seriesimportpandasaspdimportnumpyasnpimportmatplotlib.pyplotaspltdf=pd.DataFrame(np.random.rand(4,4),index=['one','two','three','four'],columns=pd.Index(['A','B','C','D'],name='bar'))df.plot.bar()plt.show()frompandasimportDataFrame,Seriesimportpandasaspdimportnumpyasnpimportmatplotlib.pyplotaspltfromnumpy.randomimportrandndf=pd.DataFrame({'a':np.random.randn(1000)+1,'b':np.random.r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年公共交通服务质量监控技术考核试卷
- 电解电容常见试题及详细答案
- (正式版)DB11∕T 2252-2024 《信息安全 人脸识别防对抗样本攻击测试要求》
- 新版2026年春期(新教材)教科版三年级下册科学知识点梳理(精简版)合集
- 新版(2022新课标)新人教版九年级英语上册【Unit1-8重点语法】专项练习(含参考答案)合集
- 职业中毒治疗专项试题及对应答案
- 2026年考核周期管理实施细则
- 2026日用陶瓷制造行业工艺技术深度研究与艺术风格创新方向与市场推广策略分析报告
- 2025~2026学年广东汕尾市九年级下学期教学质量监测化学试卷
- 2025~2026学年宁夏银川市第十七中学九年级下学期第一次模拟考试化学试卷
- 北京经济技术开发区经海第二幼儿园招聘笔试备考试题及答案详解
- 2026年领导干部网络学法用法法律知识竞赛考试题库及答案
- 2026天津石油职业技术学院招聘20人笔试参考题库及答案详解
- 2026年广东省学科名师工作室主持人面试试题(含答案)
- 2026湖南岳阳平江县润恒自来水有限公司招聘9人笔试题库【能力提升】附答案详解
- T∕CCEAS008-2026 建设工程造价咨询成果文件质量标准
- 2026年贵州省事业单位联考真题及答案
- 内瘘使用寿命的延长策略
- 2026年钢化真空玻璃创新报告及未来五至十年行业发展趋势报告
- 短剧宣发推广合作合同协议书模板
- 软件开发流程标准SOP文档模板
评论
0/150
提交评论