2026年Python数据分析库Pandas实战_第1页
2026年Python数据分析库Pandas实战_第2页
2026年Python数据分析库Pandas实战_第3页
2026年Python数据分析库Pandas实战_第4页
2026年Python数据分析库Pandas实战_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论