找回密码
 会员注册
查看: 24|回复: 0

Python一文讲透Pandas教程,非常详细

[复制链接]

3

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2024-9-5 20:08:48 | 显示全部楼层 |阅读模式
Pandas是一个强大的Python数据分析库,广泛用于数据清洗、数据处理、数据分析和数据可视化。本文将提供一个非常详细的Pandas教程,帮助你从零开始掌握Pandas的基本功能和高级特性。🧑博主简介:现任阿里巴巴嵌入式技术专家,15年工作经验,深耕嵌入式+人工智能领域,精通嵌入式领域开发、技术管理、简历招聘面试。CSDN优质创作者,提供产品测评、学习辅导、简历面试辅导、毕设辅导、项目开发、C/C++/Java/Python/Linux/AI等方面的服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:gylzbk)💬博主粉丝群介绍:①群内高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。②热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。【Python】一文讲透Pandas教程,非常详细1️⃣安装Pandas1.1使用pip安装1.2检查安装2️⃣数据结构2.1Series2.1.1创建Series2.1.2Series属性2.2DataFrame2.2.1创建DataFrame2.2.2DataFrame属性3️⃣数据操作3.1选择数据3.1.1选择列3.1.2选择行3.1.3条件选择3.2数据清洗3.2.1处理缺失值3.2.2数据类型转换3.3数据处理3.3.1添加和删除列3.3.2数据排序3.3.3数据分组3.3.4数据聚合4️⃣数据合并4.1使用concat合并4.2使用merge合并4.3使用join合并5️⃣数据可视化5.1简单绘图5.2高级绘图6️⃣高级功能6.1时间序列分析6.2数据透视表6.3多重索引6.4数据处理函数7️⃣总结1️⃣安装Pandas1.1使用pip安装你可以使用pip来安装Pandas:pipinstallpandas11.2检查安装安装完成后,可以通过以下命令检查是否安装成功:importpandasaspdprint(pd.__version__)12如果输出Pandas的版本号,说明Pandas安装成功。2️⃣数据结构Pandas主要有两种数据结构:Series和DataFrame。2.1SeriesSeries是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。2.1.1创建Seriesimportpandasaspd#使用列表创建Seriess=pd.Series([1,3,5,7,9])print(s)#使用字典创建Seriess=pd.Series({'a':1,'b':3,'c':5})print(s)1234567892.1.2Series属性print(s.index)#获取索引print(s.values)#获取值print(s.dtype)#获取数据类型1232.2DataFrameDataFrame是一种类似于二维表格的数据结构,它由多列数据组成,每列可以是不同的数据类型。2.2.1创建DataFrameimportpandasaspd#使用字典创建DataFramedata={'Name':['Alice','Bob','Charlie'],'Age':[25,30,35],'City':['NewYork','LosAngeles','Chicago']}df=pd.DataFrame(data)print(df)#使用列表创建DataFramedata=[['Alice',25,'NewYork'],['Bob',30,'LosAngeles'],['Charlie',35,'Chicago']]df=pd.DataFrame(data,columns=['Name','Age','City'])print(df)123456789101112131415161718192.2.2DataFrame属性print(df.index)#获取索引print(df.columns)#获取列名print(df.values)#获取值print(df.dtypes)#获取每列的数据类型12343️⃣数据操作3.1选择数据3.1.1选择列#选择单列print(df['Name'])#选择多列print(df[['Name','Age']])123453.1.2选择行#使用索引选择行print(df.iloc[0])#第一行print(df.iloc[0:2])#前两行#使用标签选择行print(df.loc[0])#第一行print(df.loc[0:1])#前两行12345673.1.3条件选择#选择年龄大于30的行print(df[df['Age']>30])123.2数据清洗3.2.1处理缺失值#创建包含缺失值的DataFramedata={'Name':['Alice','Bob','Charlie',None],'Age':[25,30,None,35],'City':['NewYork',None,'Chicago','LosAngeles']}df=pd.DataFrame(data)#检查缺失值print(df.isnull())#删除包含缺失值的行print(df.dropna())#填充缺失值print(df.fillna('Unknown'))123456789101112131415163.2.2数据类型转换#将年龄列转换为整数类型df['Age']=df['Age'].astype('Int64')print(df.dtypes)1233.3数据处理3.3.1添加和删除列#添加新列df['Salary']=[50000,60000,70000,80000]print(df)#删除列df=df.drop(columns=['Salary'])print(df)12345673.3.2数据排序Pandas提供了多种方法来对DataFrame进行排序。importpandasaspd#使用前面的示例DataFramedata={'Name':['Alice','Bob','Charlie','David'],'Age':[25,30,35,22],'City':['NewYork','LosAngeles','Chicago','Houston']}df=pd.DataFrame(data)#按单列排序df_sorted=df.sort_values(by='Age')print(df_sorted)#按多列排序df_sorted=df.sort_values(by=['Age','Name'])print(df_sorted)#按降序排序df_sorted=df.sort_values(by='Age',ascending=False)print(df_sorted)1234567891011121314151617181920213.3.3数据分组Pandas的groupby方法允许我们根据某一列或多列对数据进行分组,然后对每个分组进行汇总或其他操作。importpandasaspd#示例DataFramedata={'Name':['Alice','Bob','Charlie','David','Alice','Bob'],'Age':[25,30,35,22,28,32],'City':['NewYork','LosAngeles','Chicago','Houston','NewYork','LosAngeles'],'Salary':[50000,60000,70000,80000,55000,62000]}df=pd.DataFrame(data)#按城市分组并计算平均工资grouped=df.groupby('City')['Salary'].mean()print(grouped)#按城市和姓名分组并计算平均工资grouped=df.groupby(['City','Name'])['Salary'].mean()print(grouped)1234567891011121314151617183.3.4数据聚合Pandas提供了多种聚合函数,例如sum、mean、count等,可以对分组后的数据进行聚合。importpandasaspd#示例DataFramedata={'Name':['Alice','Bob','Charlie','David','Alice','Bob'],'Age':[25,30,35,22,28,32],'City':['NewYork','LosAngeles','Chicago','Houston','NewYork','LosAngeles'],'Salary':[50000,60000,70000,80000,55000,62000]}df=pd.DataFrame(data)#按城市分组并进行多种聚合操作grouped=df.groupby('City').agg({'Salary':['mean','sum','count'],'Age':'mean'})print(grouped)12345678910111213141516174️⃣数据合并Pandas提供了多种方法来合并DataFrame,例如concat、merge和join。4.1使用concat合并concat方法可以用于沿着某一轴(行或列)合并多个DataFrame。importpandasaspd#示例DataFramedf1=pd.DataFrame({'A':['A0','A1','A2','A3'],'B':['B0','B1','B2','B3']})df2=pd.DataFrame({'A':['A4','A5','A6','A7'],'B':['B4','B5','B6','B7']})#沿着行轴合并result=pd.concat([df1,df2])print(result)#沿着列轴合并result=pd.concat([df1,df2],axis=1)print(result)123456789101112131415161718194.2使用merge合并importpandasaspd#示例DataFrameleft=pd.DataFrame({'key':['K0','K1','K2','K3'],'A':['A0','A1','A2','A3'],'B':['B0','B1','B2','B3']})right=pd.DataFrame({'key':['K0','K1','K2','K3'],'C':['C0','C1','C2','C3'],'D':['D0','D1','D2','D3']})#根据键合并result=pd.merge(left,right,on='key')print(result)#示例DataFrame不同键left=pd.DataFrame({'key1':['K0','K1','K2','K3'],'key2':['K0','K1','K0','K1'],'A':['A0','A1','A2','A3'],'B':['B0','B1','B2','B3']})right=pd.DataFrame({'key1':['K0','K1','K2','K3'],'key2':['K0','K0','K0','K0'],'C':['C0','C1','C2','C3'],'D':['D0','D1','D2','D3']})#根据多个键合并result=pd.merge(left,right,on=['key1','key2'])print(result)12345678910111213141516171819202122232425262728293031323334354.3使用join合并join方法用于将两个DataFrame按索引进行合并。importpandasaspd#示例DataFrameleft=pd.DataFrame({'A':['A0','A1','A2'],'B':['B0','B1','B2']},index=['K0','K1','K2'])right=pd.DataFrame({'C':['C0','C1','C2'],'D':['D0','D1','D2']},index=['K0','K2','K3'])#使用join合并result=left.join(right)print(result)#使用不同的join方法result=left.join(right,how='outer')print(result)123456789101112131415161718195️⃣数据可视化Pandas可以与Matplotlib集成,方便地对数据进行可视化。5.1简单绘图importpandasaspdimportmatplotlib.pyplotasplt#示例DataFramedata={'Name':['Alice','Bob','Charlie','David'],'Age':[25,30,35,22],'Salary':[50000,60000,70000,80000]}df=pd.DataFrame(data)#绘制折线图df.plot(x='Name',y='Salary',kind='line')plt.show()#绘制柱状图df.plot(x='Name',y='Salary',kind='bar')plt.show()#绘制散点图df.plot(x='Age',y='Salary',kind='scatter')plt.show()123456789101112131415161718192021225.2高级绘图Pandas提供了许多高级绘图功能,例如直方图、箱线图等。importpandasaspdimportmatplotlib.pyplotasplt#示例DataFramedata={'Name':['Alice','Bob','Charlie','David'],'Age':[25,30,35,22],'Salary':[50000,60000,70000,80000]}df=pd.DataFrame(data)#绘制直方图df['Age'].plot(kind='hist')plt.show()#绘制箱线图df[['Age','Salary']].plot(kind='box')plt.show()1234567891011121314151617186️⃣高级功能6.1时间序列分析importpandasaspdimportnumpyasnp#创建时间序列dates=pd.date_range('20230101',periods=10)df=pd.DataFrame(np.random.randn(10,4),index=dates,columns=list('ABCD'))print(df)#重采样:按周重采样并计算平均值df_resampled=df.resample('W').mean()print(df_resampled)#滚动窗口:计算滚动平均值df_rolling=df.rolling(window=3).mean()print(df_rolling)1234567891011121314156.2数据透视表数据透视表是数据汇总和分析的强大工具。Pandas提供了pivot_table方法来创建数据透视表。importpandasaspd#示例DataFramedata={'Name':['Alice','Bob','Charlie','David','Alice','Bob'],'Age':[25,30,35,22,28,32],'City':['NewYork','LosAngeles','Chicago','Houston','NewYork','LosAngeles'],'Salary':[50000,60000,70000,80000,55000,62000]}df=pd.DataFrame(data)#创建数据透视表pivot_table=pd.pivot_table(df,values='Salary',index='City',columns='Name',aggfunc='mean')print(pivot_table)12345678910111213146.3多重索引Pandas支持多重索引(MultiIndex),允许在行和列上使用多个级别的索引。importpandasaspd#示例DataFramedata={'Name':['Alice','Bob','Charlie','David','Alice','Bob'],'Age':[25,30,35,22,28,32],'City':['NewYork','LosAngeles','Chicago','Houston','NewYork','LosAngeles'],'Salary':[50000,60000,70000,80000,55000,62000]}df=pd.DataFrame(data)#设置多重索引df_multi=df.set_index(['City','Name'])print(df_multi)#访问多重索引的数据print(df_multi.loc['NewYork'])print(df_multi.loc[('NewYork','Alice')])1234567891011121314151617186.4数据处理函数Pandas提供了许多函数来处理和转换数据,例如apply、map和applymap。importpandasaspd#示例DataFramedata={'Name':['Alice','Bob','Charlie','David'],'Age':[25,30,35,22],'Salary':[50000,60000,70000,80000]}df=pd.DataFrame(data)#使用apply函数df['Age_plus_10']=df['Age'].apply(lambdax:x+10)print(df)#使用map函数df['Salary_in_k']=df['Salary'].map(lambdax:x/1000)print(df)#使用applymap函数df[['Age','Salary']]=df[['Age','Salary']].applymap(lambdax:x*2)print(df)1234567891011121314151617181920217️⃣总结通过这篇详细的Pandas教程,你已经学会了如何:安装Pandas。创建和操作Series和DataFrame。选择和过滤数据。处理缺失值和转换数据类型。添加和删除列、排序和分组数据。合并DataFrame。使用Pandas进行数据可视化。进行时间序列分析。创建数据透视表。使用多重索引。使用数据处理函数。这些基础知识和高级功能将帮助你在数据分析和处理过程中更加高效和灵活。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-9 04:35 , Processed in 0.966895 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表