13 Pandas数据类型转换

13 Pandas数据类型转换

在Pandas中,数据类型转换是一项常见的操作,可以帮助我们更好地处理和分析数据。本文将介绍如何在Pandas中进行数据类型转换,并通过案例进行说明。

1. 检查数据类型

在开始转换之前,首先需要了解当前数据框中各列的数据类型。使用dtypes属性可以方便地查看:

1
2
3
4
5
6
7
8
9
10
import pandas as pd

data = {
'A': [1, 2, 3],
'B': [1.0, 2.5, 3.3],
'C': ['2023-01-01', '2023-01-02', '2023-01-03']
}

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

输出:

1
2
3
4
A      int64
B float64
C object
dtype: object

可以看到,列Aint64类型,Bfloat64类型,而Cobject(通常表示字符串)。

2. 转换数据类型

2.1 将列转换为整数

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

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

输出结果:

1
2
3
4
A      int64
B int32
C object
dtype: object

2.2 转换为日期时间

C中的日期字符串可以转换为datetime类型:

1
2
df['C'] = pd.to_datetime(df['C'])
print(df.dtypes)

输出结果:

1
2
3
4
A             int64
B int32
C datetime64[ns]
dtype: object

2.3 转换为字符串

有时我们可能需要将数值型数据转换为字符串类型,例如,将A列的类型转换为字符串:

1
2
df['A'] = df['A'].astype(str)
print(df.dtypes)

输出结果:

1
2
3
4
A     object
B int32
C datetime64[ns]
dtype: object

3. 处理缺失值

在进行类型转换时,有时会遇到缺失值。在这种情况下,首先需要处理缺失值。可以使用fillna()方法填充缺失值,然后再进行转换。例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
data_with_nan = {
'A': [1, 2, None],
'B': [1.0, None, 3.3],
'C': ['2023-01-01', '2023-01-02', None]
}

df_nan = pd.DataFrame(data_with_nan)

# 用0填充缺失值
df_nan['A'] = df_nan['A'].fillna(0)

# 转换为整数
df_nan['A'] = df_nan['A'].astype(int)
print(df_nan)

输出结果:

1
2
3
4
   A    B           C
0 1 1.0 2023-01-01
1 2 NaN 2023-01-02
2 0 3.3 None

4. 总结

在Pandas中,数据类型转换是处理数据的重要一步。通过astype()pd.to_datetime()等方法,我们可以方便地转换数据类型。在进行转换时,也要注意处理缺失值,以避免潜在的错误。

掌握这些基本的类型转换操作,能够帮助您更有效地使用Pandas进行数据分析。

14 Pandas描述性统计入门

14 Pandas描述性统计入门

在数据分析中,描述性统计是对数据进行初步分析的重要方法。Pandas库提供了强大的工具来快速获取数据的基本特征。本文将通过一些具体的案例来详细介绍如何在Pandas中进行描述性统计。

1. 导入库和加载数据

首先,我们需要导入pandas库并加载数据集。我们将使用一个简单的CSV文件作为示例。

1
2
3
4
5
import pandas as pd

# 加载数据
data = pd.read_csv('data.csv')
print(data.head())

假设data.csv包含如下数据:

年龄 收入 性别
25 50000
30 60000
22 45000
35 70000
28 52000

2. 基本统计量

2.1 使用describe()

describe()函数可以快速获得DataFrame中数值列的基本统计量,包括countmeanstdmin25%50%75%max等。

1
2
3
# 获取描述性统计量
stats = data.describe()
print(stats)

该方法输出的结果如下:

1
2
3
4
5
6
7
8
9
             年龄          收入
count 5.000000 5.000000
mean 28.000000 55400.000000
std 5.145827 10112.108691
min 22.000000 45000.000000
25% 25.000000 50000.000000
50% 28.000000 52000.000000
75% 30.000000 58000.000000
max 35.000000 70000.000000

2.2 特定列的统计量

如果我们只对某一个特定列感兴趣,可以在describe()中指定列名。

1
2
3
# 获取收入列的描述性统计量
income_stats = data['收入'].describe()
print(income_stats)

结果如下:

1
2
3
4
5
6
7
8
count       5.000000
mean 55400.000000
std 10112.108691
min 45000.000000
25% 50000.000000
50% 52000.000000
75% 58000.000000
max 70000.000000

3. 对分类数据的统计

3.1 使用value_counts()

对于分类数据,比如性别,我们可以使用value_counts()方法。在以下示例中,我们获取每个性别的计数。

1
2
3
# 统计性别的分布情况
gender_counts = data['性别'].value_counts()
print(gender_counts)

输出结果为:

1
2
3
男    3
女 2
Name: 性别, dtype: int64

4. 决策信息

4.1 分组统计

有时我们需要按组进行描述性统计。在下面的例子中,我们按性别分组并计算收入的平均值。

1
2
3
# 按性别分组计算收入的平均值
grouped_stats = data.groupby('性别')['收入'].mean()
print(grouped_stats)

输出:

1
2
3
4
性别
女 56000.0
男 55666.67
Name: 收入, dtype: float64

总结

通过本节内容,我们学习了如何使用Pandas进行描述性统计,包括基本统计量的获取、对特定列的统计、分类数据的计数以及分组统计。这些基础知识为进一步的数据分析和建模打下了坚实的基础。通过灵活运用上述方法,您可以快速了解数据的特征和分布。

15 Pandas 数据分组与聚合

15 Pandas 数据分组与聚合

在数据分析中,数据分组与聚合是非常重要的操作。它帮助我们对大规模数据进行汇总、分析和可视化。在这个小节中,我们将学习如何使用Pandas对数据进行分组和聚合,并通过示例来加深理解。

数据分组

在Pandas中,可以使用 groupby() 函数将数据按某一列或多列进行分组。分组后,我们可以对每个组进行操作,比如计算统计量。

示例数据集

首先,我们来创建一个简单的数据集:

1
2
3
4
5
6
7
8
9
10
import pandas as pd

data = {
'部门': ['销售', '销售', '技术', '技术', '人事', '人事'],
'员工': ['Alice', 'Bob', 'Charlie', 'David', 'Eve', 'Frank'],
'工资': [5000, 7000, 8000, 8500, 4000, 4500]
}

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

该数据集包含员工的基本信息,包括部门、姓名和工资。

基本分组操作

我们可以通过 groupby() 按照部门进行分组,并查看每个部门的工资情况:

1
2
grouped = df.groupby('部门')
print(grouped['工资'].mean()) # 计算每个部门的平均工资

输出将显示每个部门的平均工资:

1
2
3
4
5
部门
人事 4250.0
销售 6000.0
技术 8250.0
Name: 工资, dtype: float64

数据聚合

聚合是对分组数据进行总结的一种方式,Pandas 允许我们使用 agg() 方法同时计算多个统计量。

多重聚合示例

假设我们想同时获得每个部门的平均工资和总工资:

1
2
agg_result = grouped['工资'].agg(['mean', 'sum'])
print(agg_result)

输出将显示每个部门的平均工资和总工资:

1
2
3
4
5
          mean   sum
部门
人事 4250.0 8500
销售 6000.0 12000
技术 8250.0 16500

自定义聚合函数

Pandas 允许我们定义自己的聚合函数。比如,我们想对工资计算标准差,并且对工资大于6000的员工进行计数:

1
2
3
4
5
6
7
8
9
def custom_agg(x):
return pd.Series({
'平均工资': x.mean(),
'总工资': x.sum(),
'高收入员工数': (x > 6000).sum()
})

custom_result = grouped['工资'].agg(custom_agg)
print(custom_result)

输出将是一个包含多个自定义统计量的结果:

1
2
3
4
5
          平均工资   总工资  高收入员工数
部门
人事 4250.0 8500 0
销售 6000.0 12000 1
技术 8250.0 16500 2

结合多个列进行分组

我们还可以对多个列进行分组,比如同时按照部门和员工进行分组:

1
2
grouped_multiple = df.groupby(['部门', '员工']).agg({'工资': 'mean'})
print(grouped_multiple)

这个操作会分别检查每个部门的每个员工,并给出他们的工资。

小节总结

通过本文的介绍,我们学习了如何使用Pandas进行数据分组与聚合。掌握 groupby()agg() 函数,以及如何结合自定义聚合函数,能够帮助我们有效地从数据中提取有价值的信息。这些技能在数据分析与处理的工作中是十分关键的。