版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年Python数据分析库Pandas实战
Python数据分析库Pandas已经成为数据科学领域的核心工具之一,它为数据清洗、数据处理、数据分析等任务提供了强大而灵活的功能。随着数据量的不断增长和数据分析需求的日益复杂,掌握Pandas已经成为数据分析师和科学家的必备技能。2026年,Pandas将继续发展,引入更多新功能和优化,为数据分析工作带来更高的效率和更丰富的可能性。本文将深入探讨Pandas的核心功能和使用技巧,帮助读者更好地利用Pandas进行数据分析。
###一、Pandas基础
####1.1Pandas概述
Pandas是一个开源的数据分析和处理库,它建立在NumPy之上,提供了高效的数据结构和数据分析工具。Pandas的主要数据结构包括DataFrame和Series,这两种数据结构为数据操作提供了极大的便利。DataFrame是一个二维的表格数据结构,类似于Excel表格或SQL数据库表,而Series是一个一维的数组结构,类似于NumPy数组。
Pandas的优势在于其强大的数据处理能力,包括数据清洗、数据合并、数据转换等。它还提供了丰富的数据可视化工具,可以与Matplotlib、Seaborn等库结合使用,生成各种图表和图形。此外,Pandas还支持时间序列分析、统计分析和机器学习等高级功能,使其成为数据科学领域的必备工具。
####1.2安装和导入Pandas
在使用Pandas之前,需要确保已经安装了Python环境。Pandas可以通过pip进行安装,命令如下:
pipinstallpandas
安装完成后,可以在Python脚本中导入Pandas库:
importpandasaspd
导入Pandas后,就可以使用其提供的各种功能进行数据分析。Pandas的文档非常丰富,提供了详细的API说明和使用示例,读者可以通过官方文档了解更多信息。
####1.3数据结构
Pandas提供了两种主要的数据结构:Series和DataFrame。
#####1.3.1Series
Series是一个一维的数组结构,可以包含任何数据类型,如整数、浮点数、字符串等。Series有一个索引,用于标识每个元素的位置。以下是一个简单的Series示例:
importpandasaspd
data=[10,20,30,40,50]
series=pd.Series(data)
print(series)
输出:
010
120
230
340
450
dtype:int64
Series的索引是默认的整数索引,也可以自定义索引:
importpandasaspd
data={'a':10,'b':20,'c':30,'d':40,'e':50}
series=pd.Series(data)
print(series)
输出:
a10
b20
c30
d40
e50
dtype:int64
#####1.3.2DataFrame
DataFrame是一个二维的表格数据结构,可以包含多种数据类型。DataFrame由多个Series组成,每个Series对应DataFrame的一列。以下是一个简单的DataFrame示例:
importpandasaspd
data={
'Name':['Alice','Bob','Charlie','David'],
'Age':[25,30,35,40],
'Salary':[50000,60000,70000,80000]
}
df=pd.DataFrame(data)
print(df)
输出:
NameAgeSalary
0Alice2550000
1Bob3060000
2Charlie3570000
3David4080000
DataFrame的索引是默认的整数索引,也可以自定义索引:
importpandasaspd
data={
'Name':['Alice','Bob','Charlie','David'],
'Age':[25,30,35,40],
'Salary':[50000,60000,70000,80000]
}
df=pd.DataFrame(data,index=['A','B','C','D'])
print(df)
输出:
NameAgeSalary
AAlice2550000
BBob3060000
CCharlie3570000
DDavid4080000
###二、数据读取和写入
####2.1读取数据
Pandas提供了多种读取数据的函数,包括`read_csv`、`read_excel`、`read_sql`等。以下是一些常见的读取数据示例。
#####2.1.1读取CSV文件
CSV(Comma-SeparatedValues)是一种常见的文件格式,Pandas提供了`read_csv`函数来读取CSV文件。
importpandasaspd
df=pd.read_csv('data.csv')
print(df)
#####2.1.2读取Excel文件
Excel文件是一种常用的电子表格格式,Pandas提供了`read_excel`函数来读取Excel文件。
importpandasaspd
df=pd.read_excel('data.xlsx')
print(df)
#####2.1.3读取SQL数据库
Pandas提供了`read_sql`函数来读取SQL数据库中的数据。需要先安装SQLAlchemy库:
pipinstallsqlalchemy
然后可以使用以下代码读取SQL数据库中的数据:
importpandasaspd
fromsqlalchemyimportcreate_engine
engine=create_engine('sqlite:///database.db')
df=pd.read_sql('SELECT*FROMtable',engine)
print(df)
####2.2写入数据
Pandas提供了多种写入数据的函数,包括`to_csv`、`to_excel`、`to_sql`等。以下是一些常见的写入数据示例。
#####2.2.1写入CSV文件
importpandasaspd
df=pd.DataFrame({'Name':['Alice','Bob'],'Age':[25,30]})
df.to_csv('data.csv',index=False)
#####2.2.2写入Excel文件
importpandasaspd
df=pd.DataFrame({'Name':['Alice','Bob'],'Age':[25,30]})
df.to_excel('data.xlsx',index=False)
#####2.2.3写入SQL数据库
importpandasaspd
fromsqlalchemyimportcreate_engine
engine=create_engine('sqlite:///database.db')
df=pd.DataFrame({'Name':['Alice','Bob'],'Age':[25,30]})
df.to_sql('table',engine,if_exists='append',index=False)
###三、数据清洗
####3.1缺失值处理
数据清洗是数据分析的重要步骤之一,其中缺失值处理是非常常见的任务。Pandas提供了多种处理缺失值的函数,包括`dropna`、`fillna`等。
#####3.1.1删除缺失值
`dropna`函数可以删除包含缺失值的行或列。
importpandasaspd
data={
'Name':['Alice','Bob',None,'David'],
'Age':[25,None,35,40],
'Salary':[50000,60000,None,80000]
}
df=pd.DataFrame(data)
print(df.dropna())
输出:
NameAgeSalary
0Alice25.050000
1BobNaN60000
3David40.080000
#####3.1.2填充缺失值
`fillna`函数可以填充缺失值。
importpandasaspd
data={
'Name':['Alice','Bob',None,'David'],
'Age':[25,None,35,40],
'Salary':[50000,60000,None,80000]
}
df=pd.DataFrame(data)
print(df.fillna(0))
输出:
NameAgeSalary
0Alice25.050000
1Bob0.060000
2None35.0NaN
3David40.080000
####3.2异常值处理
异常值是指数据集中的极端值,它们可能会对数据分析结果产生影响。Pandas提供了多种处理异常值的函数,包括`drop_duplicates`、`replace`等。
#####3.2.1删除重复值
`drop_duplicates`函数可以删除重复值。
importpandasaspd
data={
'Name':['Alice','Bob','Alice','David'],
'Age':[25,30,25,40],
'Salary':[50000,60000,50000,80000]
}
df=pd.DataFrame(data)
print(df.drop_duplicates())
输出:
NameAgeSalary
0Alice25.050000
1Bob30.060000
3David40.080000
#####3.2.2替换异常值
`replace`函数可以替换异常值。
importpandasaspd
data={
'Name':['Alice','Bob','Charlie','David'],
'Age':[25,300,35,40],#300是一个异常值
'Salary':[50000,60000,70000,80000]
}
df=pd.DataFrame(data)
df['Age'].replace(300,30,inplace=True)
print(df)
输出:
NameAgeSalary
0Alice25.050000
1Bob30.060000
2Charlie35.070000
3David40.080000
###四、数据转换
####4.1数据类型转换
Pandas提供了多种数据类型转换的函数,包括`astype`、`to_numeric`等。
#####4.1.1转换为指定数据类型
`astype`函数可以将列转换为指定的数据类型。
importpandasaspd
data={
'Name':['Alice','Bob','Charlie','David'],
'Age':['25','30','35','40'],#Age列是字符串类型
'Salary':[50000,60000,70000,80000]
}
df=pd.DataFrame(data)
df['Age']=df['Age'].astype(int)
print(df.dtypes)
输出:
Nameobject
Ageint64
Salaryint64
dtype:object
#####4.1.2转换为数值类型
`to_numeric`函数可以将列转换为数值类型。
importpandasaspd
data={
'Name':['Alice','Bob','Charlie','David'],
'Age':['25','30','35','40'],#Age列是字符串类型
'Salary':[50000,60000,70000,80000]
}
df=pd.DataFrame(data)
df['Age']=pd.to_numeric(df['Age'])
print(df.dtypes)
输出:
Nameobject
Agefloat64
Salaryint64
dtype:object
####4.2数据合并
Pandas提供了多种数据合并的函数,包括`merge`、`join`、`concat`等。
#####4.2.1合并数据
`merge`函数可以根据指定的键将两个DataFrame合并。
importpandasaspd
data1={
'Name':['Alice','Bob','Charlie'],
'Age':[25,30,35]
}
data2={
'Name':['Alice','Bob','David'],
'Salary':[50000,60000,80000]
}
df1=pd.DataFrame(data1)
df2=pd.DataFrame(data2)
merged_df=pd.merge(df1,df2,on='Name')
print(merged_df)
输出:
NameAgeSalary
0Alice25.050000
1Bob30.060000
#####4.2.2连接数据
`join`函数可以根据指定的键将两个DataFrame连接。
importpandasaspd
data1={
'Name':['Alice','Bob','Charlie'],
'Age':[25,30,35]
}
data2={
'Name':['Alice','Bob','David'],
'Salary':[50000,60000,80000]
}
df1=pd.DataFrame(data1,index=['A','B','C'])
df2=pd.DataFrame(data2,index=['A','B','D'])
joined_df=df1.join(df2)
print(joined_df)
输出:
NameAgeSalary
AAlice25.050000
BBob30.060000
CCharlie35.0NaN
#####4.2.3连接数据
`concat`函数可以将多个DataFrame连接。
importpandasaspd
data1={
'Name':['Alice','Bob','Charlie'],
'Age':[25,30,35]
}
data2={
'Name':['Alice','Bob','David'],
'Salary':[50000,60000,80000]
}
df1=pd.DataFrame(data1)
df2=pd.DataFrame(data2)
concat_df=pd.concat([df1,df2],axis=1)
print(concat_df)
输出:
NameAgeNameSalary
0Alice25.0Alice50000
1Bob30.0Bob60000
2Charlie35.0David80000
###五、数据分组和聚合
####5.1数据分组
Pandas提供了`groupby`函数来进行数据分组。分组后可以进行各种聚合操作,如求和、求平均值、计数等。
#####5.1.1分组求和
importpandasaspd
data={
'Name':['Alice','Bob','Charlie','David','Alice','Bob'],
'Age':[25,30,35,40,25,30],
'Salary':[50000,60000,70000,80000,50000,60000]
}
df=pd.DataFrame(data)
grouped=df.groupby('Name').sum()
print(grouped)
输出:
AgeSalary
Name
Alice50.0100000
Bob60.0120000
Charlie35.070000
David40.080000
#####5.1.2分组求平均值
importpandasaspd
data={
'Name':['Alice','Bob','Charlie','David','Alice','Bob'],
'Age':[25,30,35,40,25,30],
'Salary':[50000,60000,70000,80000,50000,60000]
}
df=pd.DataFrame(data)
grouped=df.groupby('Name').mean()
print(grouped)
输出:
AgeSalary
Name
Alice25.050000
Bob30.060000
Charlie35.070000
David40.080000
####5.2数据聚合
Pandas提供了`agg`函数来进行数据聚合。聚合操作可以自定义,如求和、求平均值、最大值、最小值等。
#####5.2.1自定义聚合函数
importpandasaspd
data={
'Name':['Alice','Bob','Charlie','David','Alice','Bob'],
'Age':[25,30,35,40,25,30],
'Salary':[50000,60000,70000,80000,50000,60000]
}
df=pd.DataFrame(data)
grouped=df.groupby('Name').agg({'Age':'mean','Salary':'sum'})
print(grouped)
输出:
AgeSalary
Name
Alice25.0100000
Bob30.0120000
Charlie35.070000
David40.080000
#####5.2.2多个聚合函数
importpandasaspd
data={
'Name':['Alice','Bob','Charlie','David','Alice','Bob'],
'Age':[25,30,35,40,25,30],
'Salary':[50000,60000,70000,80000,50000,60000]
}
df=pd.DataFrame(data)
grouped=df.groupby('Name').agg({'Age':['mean','sum'],'Salary':'sum'})
print(grouped)
输出:
AgeSalary
Name_______
meansum
sum
Alice25.0100000
Bob30.0120000
Charlie35.070000
David40.080000
###六、数据可视化
Pandas可以与Matplotlib、Seaborn等库结合使用,生成各种图表和图形。以下是一些常见的数据可视化示例。
####6.1条形图
importpandasaspd
importmatplotlib.pyplotasplt
data={
'Name':['Alice','Bob','Charlie','David'],
'Age':[25,30,35,40],
'Salary':[50000,60000,70000,80000]
}
df=pd.DataFrame(data)
df.plot(kind='bar',x='Name',y='Salary')
plt.title('SalarybyName')
plt.xlabel('Name')
plt.ylabel('Salary')
plt.show()
####6.2折线图
importpandasaspd
importmatplotlib.pyplotasplt
data={
'Year':[2010,2011,2012,2013,2014,2015],
'Sales':[20000,22000,25000,27000,30000,32000]
}
df=pd.DataFrame(data)
df.plot(kind='line',x='Year',y='Sales')
plt.title('SalesbyYear')
plt.xlabel('Year')
plt.ylabel('Sales')
plt.show()
####6.3散点图
importpandasaspd
importmatplotlib.pyplotasplt
data={
'Age':[25,30,35,40,45,50],
'Salary':[50000,60000,70000,80000,90000,100000]
}
df=pd.DataFrame(data)
df.plot(kind='scatter',x='Age',y='Salary')
plt.title('AgevsSalary')
plt.xlabel('Age')
plt.ylabel('Salary')
plt.show()
###七、时间序列分析
Pandas提供了强大的时间序列分析功能,可以处理时间序列数据并进行各种分析。以下是一些常见的时间序列分析示例。
####7.1创建时间序列数据
importpandasaspd
dates=pd.date_range('2020-01-01',periods=6)
data=[10,20,30,40,50,60]
ts=pd.Series(data,index=dates)
print(ts)
输出:
2020-01-0110
2020-01-0220
2020-01-0330
2020-01-0440
2020-01-0550
2020-01-0660
Freq:D,dtype:int64
####7.2时间序列切片
importpandasaspd
dates=pd.date_range('2020-01-01',periods=6)
data=[10,20,30,40,50,60]
ts=pd.Series(data,index=dates)
print(ts['2020-01-01':'2020-01-03'])
输出:
2020-01-0110
2020-01-0220
2020-01-0330
Freq:D,dtype:int64
####7.3时间序列重采样
importpandasaspd
dates=pd.date_range('2020-01-01',periods=6,freq='D')
data=[10,20,30,40,50,60]
ts=pd.Series(data,index=dates)
print(ts.resample('2D').sum())
输出:
2020-01-0130
2020-01-0370
Freq:2D,dtype:int64
###八、总结
Pandas是一个强大而灵活的数据分析和处理库,它为数据清洗、数据处理、数据分析等任务提供了丰富的功能。掌握Pandas已经成为数据分析师和科学家的必备技能。本文深入探讨了Pandas的核心功能和使用技巧,包括数据读取和写入、数据清洗、数据转换、数据分组和聚合、数据可视化以及时间序列分析等。通过学习和实践这些功能,读者可以更好地利用Pandas进行数据分析,提高工作效率,获得更有价值的洞察。
在数据分析的世界里,Pandas不仅仅是一个工具,它更像是一位得力的助手,能够帮助我们轻松地驾驭复杂的数据。随着数据量的爆炸式增长,数据分析的需求也日益复杂,Pandas凭借其强大的功能和灵活的操作,成为了数据分析师和科学家的首选工具。在2026年,Pandas继续发展,引入了更多新功能和优化,为数据分析工作带来了更高的效率和更丰富的可能性。
###八、数据筛选和条件查询
数据筛选和条件查询是数据分析中非常常见的操作,Pandas提供了多种方法来进行数据筛选和条件查询,使得数据分析师可以快速地找到所需的数据。
####8.1基本条件查询
Pandas允许我们使用布尔索引来进行数据筛选,通过简单的条件表达式,可以快速地筛选出符合条件的数据。例如,我们可以筛选出年龄大于30的员工:
importpandasaspd
data={
'Name':['Alice','Bob','Charlie','David','Eve'],
'Age':[25,30,35,40,45],
'Salary':[50000,60000,70000,80000,90000]
}
df=pd.DataFrame(data)
filtered_df=df[df['Age']>30]
print(filtered_df)
输出:
NameAgeSalary
2Charlie35.070000
3David40.080000
4Eve45.090000
####8.2多条件查询
Pandas允许我们使用逻辑运算符来进行多条件查询,通过组合多个条件表达式,可以筛选出符合多个条件的数据。例如,我们可以筛选出年龄大于30且薪水超过70000的员工:
filtered_df=df[(df['Age']>30)&(df['Salary']>70000)]
print(filtered_df)
输出:
NameAgeSalary
2Charlie35.070000
3David40.080000
####8.3使用查询函数
Pandas还提供了`query`函数,可以让我们使用SQL风格的查询语句来进行数据筛选。例如,我们可以使用`query`函数来筛选出年龄大于30的员工:
filtered_df=df.query('Age>30')
print(filtered_df)
输出:
NameAgeSalary
2Charlie35.070000
3David40.080000
使用`query`函数可以使代码更加简洁,提高可读性。
###九、数据排序
数据排序是数据分析中常见的操作,Pandas提供了多种方法来进行数据排序,使得数据分析师可以快速地按照特定的顺序排列数据。
####9.1单列排序
Pandas允许我们使用`sort_values`函数来进行单列排序,可以按照升序或降序排列数据。例如,我们可以按照年龄升序排列数据:
sorted_df=df.sort_values(by='Age')
print(sorted_df)
输出:
NameAgeSalary
0Alice25.050000
1Bob30.060000
2Charlie35.070000
3David40.080000
4Eve45.090000
####9.2多列排序
Pandas允许我们使用`sort_values`函数来进行多列排序,可以按照多个列的顺序排列数据。例如,我们可以先按照年龄升序排列,再按照薪水降序排列:
sorted_df=df.sort_values(by=['Age','Salary'],ascending=[True,False])
print(sorted_df)
输出:
NameAgeSalary
1Bob30.060000
0Alice25.050000
2Charlie35.070000
3David40.080000
4Eve45.090000
####9.3按索引排序
Pandas允许我们使用`sort_index`函数来按索引排序,可以按照升序或降序排列索引。例如,我们可以按照索引升序排列:
sorted_df=df.sort_index()
print(sorted_df)
输出:
NameAgeSalary
0Alice25.050000
1Bob30.060000
2Charlie35.070000
3David40.080000
4Eve45.090000
###十、数据重塑
数据重塑是数据分析中常见的操作,Pandas提供了多种方法来进行数据重塑,使得数据分析师可以快速地将数据转换为不同的格式。
####10.1转置
Pandas允许我们使用`transpose`函数来转置数据,即将行转换为列,列转换为行。例如,我们可以将数据框转置:
transposed_df=df.transpose()
print(transposed_df)
输出:
NameAgeSalary
0Alice25.050000
1Bob30.060000
2Charlie35.070000
3David40.080000
4Eve45.090000
####10.2拆分和合并
Pandas允许我们使用`melt`函数来拆分数据,将宽格式数据转换为长格式数据。例如,我们可以将数据框拆分为长格式:
melted_df=df.melt(id_vars=['Name'],value_vars=['Age','Salary'])
print(melted_df)
输出:
Namevariablevalue
0AliceAge25
1BobAge30
2CharlieAge35
3DavidAge40
4EveAge45
5AliceSalary50000
6BobSalary60000
7CharlieSalary70000
8DavidSalary80000
9EveSalary90000
Pandas还提供了`pivot`函数,可以将长格式数据转换为宽格式数据。例如,我们可以将长格式数据转换为宽格式:
pivoted_df=melted_df.pivot(index='Name',columns='variable',values='value')
print(pivoted_df)
输出:
AgeSalary
Name
Alice25.050000
Bob30.060000
Charlie35.070000
David40.080000
Eve45.090000
###十一、数据透视表
数据透视表是数据分析中常见的操作,Pandas提供了`pivot_table`函数,可以让我们快速地创建数据透视表。
####11.1创建基本数据透视表
Pandas允许我们使用`pivot_table`函数来创建数据透视表,可以按照指定的行、列和值进行聚合。例如,我们可以创建一个数据透视表,按照部门分组,计算每个部门的平均薪水:
data={
'Name':['Alice','Bob','Charlie','David','Eve'],
'Department':['HR','HR','IT','IT','HR'],
'Salary':[50000,60000,70000,80000,90000]
}
df=pd.DataFrame(data)
pivot_table=df.pivot_table(values='Salary',index='Department',aggfunc='mean')
print(pivot_table)
输出:
Salary
Department
HR70000.0
IT75000.0
####11.2自定义数据透视表
Pandas允许我们使用`pivot_table`函数来自定义数据透视表,可以指定多个行、列和值,以及聚合函数。例如,我们可以创建一个数据透视表,按照部门和性别分组,计算每个部门的平均薪水和最大薪水:
data={
'Name':['Alice','Bob','Charlie','David','Eve'],
'Department':['HR','HR','IT','IT','HR'],
'Gender':['Female','Male','Male','Male','Female'],
'Salary':[50000,60000,70000,80000,90000]
}
df=pd.DataFrame(data)
pivot_table=df.pivot_table(values=['Salary'],index=['Department','Gender'],aggfunc={'Salary':['mean','max']})
print(pivot_table)
输出:
meanmax
DepartmentGender
HRFemale70000
Male60000
ITMale80000
Female90000
###十二、数据统计
数据统计是数据分析中常见的操作,Pandas提供了多种统计函数,可以让我们快速地对数据进行统计。
####12.1基本统计函数
Pandas提供了多种统计函数,如`mean`、`median`、`mode`、`std`、`var`等,可以让我们快速地对数据进行统计。例如,我们可以计算数据框的平均值、中位数、众数、标准差和方差:
data={
'Name':['Alice','Bob','Charlie','David','Eve'],
'Age':[25,30,35,40,45],
'Salary':[50000,60000,70000,80000,90000]
}
df=pd.DataFrame(data)
print(df['Age'].mean())
print(df['Age'].median())
print(df['Age'].mode())
print(df['Age'].std())
print(df['Age'].var())
输出:
33.0
35.0
035
dtype:int64
7.905694150420948
62.5
####12.2分组统计
Pandas允许我们使用`groupby`函数来进行分组统计,可以按照指定的列进行分组,并对每个组进行统计。例如,我们可以计算每个部门的平均薪水和最大薪水:
data={
'Name':['Alice','Bob','Charlie','David','Eve'],
'Department':['HR','HR','IT','IT','HR'],
'Salary':[50000,60000,70000,80000,90000]
}
df=pd.DataFrame(data)
grouped=df.groupby('Department')['Salary'].agg(['mean','max'])
print(grouped)
输出:
meanmax
Department
HR7000090000
IT7500080000
###十三、数据合并和连接
数据合并和连接是数据分析中常见的操作,Pandas提供了多种方法来进行数据合并和连接,使得数据分析师可以快速地将多个数据集合并在一起。
####13.1内连接
Pandas允许我们使用`merge`函数来进行内连接,可以按照指定的键将两个数据集进行内连接。例如,我们可以将两个数据集进行内连接:
data1={
'Name':['Alice','Bob','Charlie'],
'Age':[25,30,35]
}
data2={
'Name':['Alice','Bob','David'],
'Salary':[50000,60000,80000]
}
df1=pd.DataFrame(data1)
df2=pd.DataFrame(data2)
merged_df=pd.merge(df1,df2,on='Name')
print(merged_df)
输出:
NameAgeSalary
0Alice25.050000
1Bob30.060000
####13.2左连接
Pandas允许我们使用`merge`函数来进行左连接,可以按照指定的键将两个数据集进行左连接。例如,我们可以将两个数据集进行左连接:
merged_df=pd.merge(df1,df2,on='Name',how='left')
print(merged_df)
输出:
NameAgeSalary
0Alice25.050000
1Bob30.060000
2Charlie35.0NaN
####13.3右连接
Pandas允许我们使用`merge`函数来进行右连接,可以按照指定的键将两个数据集进行右连接。例如,我们可以将两个数据集进行右连接:
merged_df=pd.merge(df1,df2,on='Name',how='right')
print(merged_df)
输出:
NameAgeSalary
0Alice25.050000
1Bob30.060000
2DavidNaN80000
####13.4外连接
Pandas允许我们使用`merge`函数来进行外连接,可以按照指定的键将两个数据集进行外连接。例如,我们可以将两个数据集进行外连接:
merged_df=pd.merge(df1,df2,on='Name',how='outer')
print(merged_df)
输出:
NameAgeSalary
0Alice25.050000
1Bob30.060000
2Charlie35.0NaN
3DavidNaN80000
###十四、数据分组和聚合
数据分组和聚合是数据分析中常见的操作,Pandas提供了多种方法来进行数据分组和聚合,使得数据分析师可以快速地对数据进行分组和聚合。
####14.1分组统计
Pandas允许我们使用`groupby`函数来进行分组统计,可以按照指定的列进行分组,并对每个组进行统计。例如,我们可以计算每个部门的平均薪水和最大薪水:
data={
'Name':['Alice','Bob','Charlie','David','Eve'],
'Department':['HR','HR','IT','IT','HR'],
'Salary':[50000,60000,70000,80000,90000]
}
df=pd.DataFrame(data)
grouped=df.groupby('Department')['Salary'].agg(['mean','max'])
print(grouped)
输出:
meanmax
Department
HR7000090000
IT7500080000
####14.2多列分组
Pandas允许我们使用`groupby`函数来进行多列分组,可以按照指定的多个列进行分组,并对每个组进行统计。例如,我们可以按照部门和性别分组,计算每个部门的平均薪水和最大薪水:
data={
'Name':['Alice','Bob','Charlie','David','Eve'],
'Department':['HR','HR','IT','IT','HR'],
'Gender':['Female','Male','Male','Male','Female'],
'Salary':[50000,60000,70000,80000,90000]
}
df=pd.DataFrame(data)
grouped=df.groupby(['Department','Gender'])['Salary'].agg(['mean','max'])
print(grouped)
输出:
meanmax
DepartmentGender
HRFemale70000
Male60000
ITMale80000
Female90000
####14.3分组排序
Pandas允许我们使用`groupby`函数来进行分组排序,可以按照指定的列对分组结果进行排序。例如,我们可以按照部门的平均薪水进行排序:
grouped=df.groupby('Department')['Salary'].mean().sort_values()
print(grouped)
输出:
HR70000
IT75000
Name:Salary,dtype:float64
###十五、数据填充
数据填充是数据分析中常见的操作,Pandas提供了多种方法来进行数据填充,使得数据分析师可以快速地填充缺失值。
####15.1填充固定值
Pandas允许我们使用`fillna`函数来填充固定值,可以按照指定的值填充缺失值。例如,我们可以将数据框中的缺失值填充为0:
data={
'Name':['Alice','Bob','Charlie','David','Eve'],
'Age':[25,None,35,None,45],
'Salary':[50000,60000,None,80000,None]
}
df=pd.DataFrame(data)
filled_df=df.fillna(0)
print(filled_df)
输出:
NameAgeSalary
0Alice25.050000
1Bob0.060000
2Charlie35.0NaN
3David0.080000
4Eve45.0NaN
####15.2前向填充和后向填充
Pandas允许我们使用`fillna`函数来进行前向填充和后向填充,可以按照前一个值或后一个值填充缺失值。例如,我们可以将数据框中的缺失值前向填充:
filled_df=df.fillna(method='ffill')
print(filled_df)
输出:
NameAgeSalary
0Alice25.050000
1Bob25.060000
2Charlie35.0NaN
3David35.080000
4Eve45.0NaN
例如,我们可以将数据框中的缺失值后向填充:
filled_df=df.fillna(method='bfill')
print(filled_df)
输出:
NameAgeSalary
0Alice25.050000
1Bob25.060000
2Charlie35.080000
3David40.080000
4Eve45.080000
####15.3填充自定义值
Pandas允许我们使用`fillna`函数来填充自定义值,可以按照指定的值填充缺失值。例如,我们可以将数据框中的缺失值填充为自定义值:
filled_df=df.fillna({'Age':0,'Salary':10000})
print(filled_df)
输出:
NameAgeSalary
0Alice25.050000
1Bob25.060000
2Charlie35.070000
3David40.080000
4Eve45.090000
###十六、数据替换
数据替换是数据分析中常见的操作,Pandas提供了多种方法来进行数据替换,使得数据分析师可以快速地替换数据中的值。
####16.1替换固定值
Pandas允许我们使用`replace`函数来替换固定值,可以按照指定的值替换数据中的值。例如,我们可以将数据框中的值100替换为200:
data={
'Name':['Alice','Bob','Charlie','David','Eve'],
'Age':[25,30,35,40,45],
'Salary':[50000,60000,70000,80000,90000]
}
df=pd.DataFrame(data)
replaced_df=df.replace(100,200)
print(replaced_df)
输出:
NameAgeSalary
0Alice25.050000
1Bob30.060000
2Charlie35.070000
3David40.080000
4Eve45.090000
####16.2替换多个值
Pandas允许我们使用`replace`函数来替换多个值,可以按照指定的多个值替换数据中的值。例如,我们可以将数据框中的值100和200替换为300和400:
replaced_df=df.replace([100,200],[300,400])
print(replaced_df)
输出:
NameAgeSalary
0Alice25.050000
1Bob30.060000
2Charlie35.070000
3David40.080000
4Eve45.090000
####16.3替换正则表达式
Pandas允许我们使用`replace`函数来替换正则表达式,可以按照指定的正则表达式替换数据中的值。例如,我们可以将数据框中的值中的所有数字替换为字母:
replaced_df=df.replace(r'\d+','X',regex=True)
print(replaced_df)
输出:
NameAgeSalary
0AliceX.XX.X
1BobX.XX.X
2CharlieX.XX.X
3DavidX.XX.X
4EveX.XX.X
###十七、数据透视表
数据透视表是数据分析中常见的操作,Pandas提供了`pivot_table`函数,可以让我们快速地创建数据透视表。
####17.1创建基本数据透视表
Pandas允许我们使用`pivot_table`函数来创建数据透视表,可以按照指定的行、列和值进行聚合。例如,我们可以创建一个数据透视表,按照部门分组,计算每个部门的平均薪水:
data={
'Name':['Alice','Bob','Charlie','David','Eve'],
'Department':['HR','HR','IT','IT','HR'],
'Salary':[50000,60000,70000,80000,90000]
}
df=pd.DataFrame(data)
pivot_table=df.pivot_table(values='Salary',index='Department',aggfunc='mean')
print(pivot_table)
输出:
Salary
Department
HR70000.0
IT75000.0
####17.2自定义数据透视表
Pandas允许我们使用`pivot_table`函数来自定义数据透视表,可以指定多个行、列和值,以及聚合函数。例如,我们可以创建一个数据透视表,按照部门和性别分组,计算每个部门的平均薪水和最大薪水:
data={
'Name':['Alice','Bob','Charlie','David','Eve'],
'Department':['HR','HR','IT','IT','HR'],
'Gender':['Female','Male','Male','Male','Female'],
'Salary':[50000,60000,70000,80000,90000]
}
df=pd.DataFrame(data)
pivot_table=df.pivot_table(values=['Salary'],index=['Department','Gender'],aggfunc={'Salary':['mean','max']})
print(pivot_table)
输出:
meanmax
DepartmentGender
HRFemale70000
Male60000
ITMale80000
Female90000
###十八、数据统计
数据统计是数据分析中常见的操作,Pandas提供了多种统计函数,可以让我们快速地对数据进行统计。
####18.1基本统计函数
Pandas提供了多种统计函数,如`mean`、`median`、`mode`、`std`、`var`等,可以让我们快速地对数据进行统计。例如,我们可以计算数据框的平均值、中位数、众数、标准差和方差:
data={
'Name':['Alice','Bob','Charlie','David','Eve'],
'Age':[25,30,35,40,45],
'Salary':[50000,60000,70000,80000,90000]
}
df=pd.DataFrame(data)
print(df['Age'].mean())
print(df['Age'].median())
print(df['Age'].mode())
print(df['Age'].std())
print(df['Age'].var())
输出:
33.0
35.0
035
dtype:int64
7.905694150420948
62.5
####18.2分组统计
Pandas允许我们使用`groupby`函数来进行分组统计,可以按照指定的列进行分组,并对每个组进行统计。例如,我们可以计算每个部门的平均薪水和最大薪水:
data={
'Name':['Alice','Bob','Charlie','David','Eve'],
'Department':['HR','HR','IT','IT','HR'],
'Salary':[50000,60000,70000,80000,90000]
}
df=pd.DataFrame(data)
grouped=df.groupby('Department')['Salary'].agg(['mean','max'])
print(grouped)
输出:
meanmax
Department
HR7000090000
IT7500080000
###十九、数据合并和连接
数据合并和连接是数据分析中常见的操作,Pandas提供了多种方法来进行数据合并和连接,使得数据分析师可以快速地将多个数据集合并在一起。
####19.1内连接
Pandas允许我们使用`merge`函数来进行内连接,可以按照指定的键将两个数据集进行内连接。例如,我们可以将两个数据集进行内连接:
data1={
'Name':['Alice','Bob','Charlie'],
'Age':[25,30,35]
}
data2={
'Name':['Alice','Bob','David'],
'Salary':[50000,60000,80000]
}
df1=pd.DataFrame(data1)
df2=pd.DataFrame(data2)
merged_df=pd.merge(df1,df2,on='Name')
print(merged_df)
输出:
NameAgeSalary
0Alice25.050000
1Bob30.060000
####19.2左连接
Pandas允许我们使用`merge`函数来进行左连接,可以按照指定的键将两个数据集进行左连接。例如,我们可以将两个数据集进行左连接:
merged_df=pd.merge(df1,df2,on='Name',how='left')
print(merged_df)
输出:
NameAgeSalary
0Alice25.050000
1Bob30.060000
2Charlie35.0NaN
####19.3右连接
Pandas允许我们使用`merge`函数来进行右连接,可以按照指定的键将两个数据集进行右连接。例如,我们可以将两个数据集进行右连接:
merged_df=pd.merge(df1,df2,on='Name',how='right')
print(merged_df)
输出:
NameAgeSalary
0Alice25.050000
1Bob30.060000
2DavidNaN80000
####19.4外连接
Pandas允许我们使用`merge`函数来进行外连接,可以按照指定的键将两个数据集进行外连接。例如,我们可以将两个数据集进行外连接:
merged_df=pd.merge(df1,df2,on='Name',how='outer')
print(merged_df)
输出:
NameAgeSalary
0Alice25.050000
1Bob30.060000
2Charlie35.0NaN
3DavidNaN80000
###二十、数据重塑
数据重塑是数据分析中常见的操作,Pandas提供了多种方法来进行数据重塑,使得数据分析师可以快速地将数据转换为不同的格式。
####20.1转置
Pandas允许我们使用`transpose`函数来转置数据,即将行转换为列,列转换为行。例如,我们可以将数据框转置:
transposed_df=df.transpose()
print(transposed_df)
输出:
NameAgeSalary
0Alice25.050000
1Bob30.060000
2Charlie35.070000
3David40.080000
4Eve45.090000
####20.2拆分和合并
Pandas允许我们使用`melt`函数来拆分数据,将宽格式数据转换为长格式数据。例如,我们可以将数据框拆分为长格式:
melted_df=df.melt(id_vars=['Name'],value_vars=['Age','Salary']
print(melted_df)
输出:
Namevariablevalue
0AliceAge25
1BobAge30
2CharlieAge35
3DavidAge40
4EveAge45
5AliceSalary50000
6BobSalary60000
7CharlieSalary70000
8DavidSalary80000
9EveSalary90000
Pandas还提供了`pivot`函数,可以将长格式数据转换为宽格式数据。例如,我们可以将长格式数据转换为宽格式:
pivoted_df=melted_df.pivot(index='Name',columns='variable',values='value')
print(pivoted_df)
输出:
AgeSalary
Name
Alice25.050000
Bob30.060000
Charlie35.070000
David40.080000
Eve45.090000
###二十一、数据筛选和条件查询
数据筛选和条件查询是数据分析中非常常见的操作,Pandas提供了多种方法来进行数据筛选和条件查询,使得数据分析师可以快速地找到所需的数据。
####21.1基本条件查询
Pandas允许我们使用布尔索引来进行数据筛选,通过简单的条件表达式,可以快速地筛选出符合条件的数据。例如,我们可以筛选出年龄大于30的员工:
importpandasaspd
data={
'Name':['Alice','Bob','Charlie','David','Eve'],
'Age':[25,30,35,40,45],
'Salary':[50000,60000,70000,80000,90000]
}
df=pd.DataFrame(data)
filtered_df=df[df['Age']>30]
print(filtered_df)
输出:
NameAgeSalary
2Charlie35.070000
3David40.080000
4Eve45.090000
####21.2多条件查询
Pandas允许我们使用逻辑运算符来进行多条件查询,通过组合多个条件表达式,可以筛选出符合多个条件的数据。例如,我们可以筛选出年龄大于30且薪水超过70000的员工:
filtered_df=df[(df['Age']>30)&(df['Salary']>70000)]
print(filtered_df)
输出:
NameAgeSalary
2Charlie35.070000
3David40.080000
####21.3使用查询函数
Pandas还提供了`query`函数,可以让我们使用SQL风格的查询语句来进行数据筛选。例如,我们可以使用`query`函数来筛选出年龄大于30的员工:
filtered_df=df.query('Age>30')
print(filtered_df)
输出:
NameAgeSalary
2Charlie35.070000
3David40.080000
4Eve45.090000
使用`query`函数可以使代码更加简洁,提高可读性。
###二十二、数据排序
数据排序是数据分析中常见的操作,Pandas提供了多种方法来进行数据排
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国华电集团有限公司华电电力科学研究院有限公司校园招聘7人第二批考试参考试题及答案解析
- 2026宁夏银川伊百盛生物工程有限公司招聘13人笔试参考题库及答案解析
- 2026中国科学院东北地理与农业生态研究所作物生理与栽培学科组课题用工人员招聘笔试备考题库及答案解析
- 2026宁夏红枸杞产业有限公司招聘8人考试备考题库及答案解析
- 2026贵州黔方有渔水产科技有限公司第三批次自主招聘5人考试参考题库及答案解析
- 2026广东东莞市公安局清溪分局警务辅助人员招聘30人(第1批)笔试备考题库及答案解析
- 2026湖南张家界天门小学见习生招聘笔试备考题库及答案解析
- 2026北京大学房地产管理部招聘劳动合同制人员1人笔试备考试题及答案解析
- 2026春安徽合肥市安居苑小学教育集团教师招聘2人笔试模拟试题及答案解析
- 2026贵州贵阳市阅山湖小学春季临聘教师招聘6人笔试备考题库及答案解析
- DB5104∕T82-2023 康养产业项目认定规范
- 2025-2030年中国太阳能光伏发电行业市场深度调研及前景趋势与投资研究报告
- 驾校教练车承包协议
- 金砖国家的经济合作试题及答案
- 《鸭养殖技术》课件
- 国防科大宣讲课件
- 建筑施工企业安全风险分级管控及隐患排查治理双重预防工作指南
- 会计中级职称《财务管理》电子书
- 机场控制区通行证培训
- 苗圃管理的病虫害防治及维护措施
- 物理课程标准2025解读
评论
0/150
提交评论