Pandas数据处理进阶详解攻略
本文主要介绍一些Pandas进阶数据处理技巧,包括数据分组、数据透视表、合并数据、重塑数据等。以下是各个技巧的详细介绍。
数据分组
数据分组是把数据集按照某种标准分成若干个小组,并在每个小组上进行相同的操作。例如,我们想要统计每个部门的平均薪资、最高薪资等信息,就需要对数据集按照部门进行分组。使用Pandas可以非常方便地实现数据分组。
基本语法
grouped = df.groupby('column_name')
df
:要分组的数据集;'column_name'
:要分组的列名。
示例
以employees
数据集为例进行分组:
import pandas as pd
employees = pd.read_csv('employees.csv')
grouped = employees.groupby('Department')
# 统计每个部门的平均薪资
grouped['Salary'].mean()
# 统计每个部门的最高薪资
grouped['Salary'].max()
数据透视表
数据透视表是一种可以对数据进行汇总和分析的交互式报表,提供了复杂多维数据分析和可视化功能。Pandas可以轻松地生成数据透视表。
基本语法
pd.pivot_table(
data,
values=None,
index=None,
columns=None,
aggfunc='mean',
fill_value=None
)
data
:要汇总的数据集;values
:要汇总的数据列名;index
:数据透视表的行;columns
:数据透视表的列;aggfunc
:聚合函数,用于对相同值进行聚合操作;fill_value
:用于替换缺失值的值。
示例
以employees
数据集为例,展示每个部门和工作类别的平均薪资:
import pandas as pd
employees = pd.read_csv('employees.csv')
pd.pivot_table(
employees,
values='Salary',
index=['Department', 'Job Title'],
columns=None,
aggfunc='mean'
)
合并数据
合并数据是将来自不同数据源的数据组合在一起,Pandas提供了多种合并数据的方法。
基本语法
merged = pd.merge(
left,
right,
how='inner',
on=None,
left_on=None,
right_on=None,
sort=False
)
left
:左边的数据集;right
:右边的数据集;how
:合并方式,可以是’inner’、’outer’、’left’、’right’,默认为’inner’;on
:共同使用的列名,只能在两个数据集都有这些列名的时候使用;left_on
:左边数据集使用的列名,只有在左边数据集和右边数据集的列名不同时使用;right_on
:右边数据集使用的列名,只有在左边数据集和右边数据集的列名不同时使用;sort
:是否按照共同列名进行排序。
示例
以employees
和departments
数据集为例进行合并:
import pandas as pd
employees = pd.read_csv('employees.csv')
departments = pd.read_csv('departments.csv')
# 内连接
inner_join = pd.merge(employees, departments, on='Department', how='inner')
# 左连接
left_join = pd.merge(employees, departments, on='Department', how='left')
# 右连接
right_join = pd.merge(employees, departments, on='Department', how='right')
# 外连接
outer_join = pd.merge(employees, departments, on='Department', how='outer')
重塑数据
重塑数据是指将数据从一种格式转换为另一种格式。常见的重塑方法是将数据从长格式转换为宽格式,或者从宽格式转换为长格式。Pandas提供了多种重塑数据的方法。
基本语法
长格式转换为宽格式
reshaped = df.pivot(index='column_name_1', columns='column_name_2', values='column_name_3')
df
:要重塑的数据集;index
:新数据集的行名(一般是长格式的“id”列);columns
:新数据集的列名;values
:新数据集的值。
宽格式转换为长格式
reshaped = df.melt(id_vars=['id_column', 'extra_column'], value_vars=['column_1', 'column_2'])
df
:要重塑的数据集;id_vars
:长格式的“id”列和额外的列名列;value_vars
:宽格式中要被展开为行的列。
示例
以宽格式的sales
数据集为例进行重塑:
import pandas as pd
sales = pd.read_csv('sales.csv')
# 将销售额中的每个月份作为列名,每个销售员作为行名
sales_by_salesperson = sales.pivot(index='Salesperson', columns='Month', values='Sales')
# 将每列数据(每个月份的销售额)展开成新的数据集中的多行记录
sales_melted = sales.melt(id_vars=['Salesperson', 'Month'], value_vars=['Sales'])
以上就是Pandas进阶数据处理的详细攻略。通过数据分组、数据透视表、合并数据和重塑数据等技巧,可以大大提高数据处理的效率。