pandas数据处理进阶详解

  • Post category:Python

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:是否按照共同列名进行排序。

示例

employeesdepartments数据集为例进行合并:

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进阶数据处理的详细攻略。通过数据分组、数据透视表、合并数据和重塑数据等技巧,可以大大提高数据处理的效率。