跳到主要内容

Pandas 数据转换

在数据分析中,数据转换是一个至关重要的步骤。它涉及将原始数据转换为更适合分析的格式或结构。Pandas 提供了丰富的功能来帮助我们完成这些任务。本文将介绍如何使用 Pandas 进行数据转换,包括数据类型转换、数据重塑、数据聚合等操作。

1. 数据类型转换

在数据分析中,确保数据类型的正确性非常重要。Pandas 提供了多种方法来转换数据类型。

示例:转换数据类型

假设我们有一个包含混合数据类型的 DataFrame:

python
import pandas as pd

data = {
'A': [1, 2, 3],
'B': ['4', '5', '6'],
'C': [7.1, 8.2, 9.3]
}

df = pd.DataFrame(data)
print(df.dtypes)

输出:

A      int64
B object
C float64
dtype: object

我们可以使用 astype() 方法将列 B 转换为整数类型:

python
df['B'] = df['B'].astype(int)
print(df.dtypes)

输出:

A      int64
B int64
C float64
dtype: object
提示

在转换数据类型时,确保数据是兼容的。例如,尝试将非数字字符串转换为整数会导致错误。

2. 数据重塑

数据重塑是指将数据从一种结构转换为另一种结构。Pandas 提供了多种方法来实现这一点,例如 pivotmeltstack/unstack

示例:使用 pivot 进行数据重塑

假设我们有一个包含销售数据的 DataFrame:

python
data = {
'Date': ['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02'],
'Product': ['A', 'B', 'A', 'B'],
'Sales': [100, 150, 200, 250]
}

df = pd.DataFrame(data)
print(df)

输出:

         Date Product  Sales
0 2023-01-01 A 100
1 2023-01-01 B 150
2 2023-01-02 A 200
3 2023-01-02 B 250

我们可以使用 pivot 方法将数据重塑为以 Date 为索引,Product 为列的形式:

python
pivot_df = df.pivot(index='Date', columns='Product', values='Sales')
print(pivot_df)

输出:

Product       A    B
Date
2023-01-01 100 150
2023-01-02 200 250
备注

pivot 方法适用于将长格式数据转换为宽格式数据。

3. 数据聚合

数据聚合是指将多个数据点合并为单个数据点。Pandas 提供了 groupby 方法来实现这一点。

示例:使用 groupby 进行数据聚合

假设我们有一个包含销售数据的 DataFrame:

python
data = {
'Date': ['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02'],
'Product': ['A', 'B', 'A', 'B'],
'Sales': [100, 150, 200, 250]
}

df = pd.DataFrame(data)
print(df)

输出:

         Date Product  Sales
0 2023-01-01 A 100
1 2023-01-01 B 150
2 2023-01-02 A 200
3 2023-01-02 B 250

我们可以使用 groupby 方法按 Product 列对数据进行分组,并计算每个产品的总销售额:

python
grouped_df = df.groupby('Product')['Sales'].sum()
print(grouped_df)

输出:

Product
A 300
B 400
Name: Sales, dtype: int64
警告

在使用 groupby 时,确保选择正确的列进行分组和聚合。

4. 实际案例

案例:处理销售数据

假设我们有一个包含销售数据的 CSV 文件 sales_data.csv,内容如下:

Date,Product,Sales
2023-01-01,A,100
2023-01-01,B,150
2023-01-02,A,200
2023-01-02,B,250

我们可以使用 Pandas 读取数据并进行数据转换:

python
df = pd.read_csv('sales_data.csv')

# 转换数据类型
df['Date'] = pd.to_datetime(df['Date'])

# 数据重塑
pivot_df = df.pivot(index='Date', columns='Product', values='Sales')

# 数据聚合
grouped_df = df.groupby('Product')['Sales'].sum()

print(pivot_df)
print(grouped_df)

输出:

Product       A    B
Date
2023-01-01 100 150
2023-01-02 200 250

Product
A 300
B 400
Name: Sales, dtype: int64

总结

在本文中,我们介绍了如何使用 Pandas 进行数据转换,包括数据类型转换、数据重塑和数据聚合。这些操作是数据清洗和分析的基础,掌握它们将帮助你更有效地处理和分析数据。

附加资源

练习

  1. 尝试将以下 DataFrame 中的 Price 列从字符串转换为浮点数:
python
data = {
'Product': ['A', 'B', 'C'],
'Price': ['10.5', '20.3', '30.7']
}

df = pd.DataFrame(data)
  1. 使用 melt 方法将以下 DataFrame 从宽格式转换为长格式:
python
data = {
'Date': ['2023-01-01', '2023-01-02'],
'A': [100, 200],
'B': [150, 250]
}

df = pd.DataFrame(data)

通过完成这些练习,你将更好地理解 Pandas 数据转换的概念和应用。