真香啊,5个小而美的 Pandas 实战案例

1. 读取数据

Pandas 是一种常用的数据处理工具,通过 Pandas 的 read_csv() 方法,我们可以轻松地将 CSV 格式的数据文件读取到 Pandas 的 Dataframe 中。

在下面的实例中,我们将使用 NOAA 销售数据集 (NOAA’s Global Surface Summary of the Day),该数据集记录了全球各地的天气历史数据,包括每天的最高温度、最低温度和降雨量。为了便于演示,我们将数据集随机采样并保存为一个名为 weather.csv 的文件。

import pandas as pd

# 读取 CSV 文件并转换为 Dataframe

data = pd.read_csv('weather.csv')

# 查看前 5 行数据

print(data.head())

通过以上代码,我们可以很容易地读取数据文件,并且使用 head() 方法查看前 5 行数据,以确保文件已经正确加载。

2. 数据清洗

2.1 缺失值处理

在真实的数据中,往往会存在一些缺失值,需要我们进行一定的处理,否则会对后续的数据分析造成较大的影响。在 Pandas 中,我们可以使用 dropna() 方法删除包含缺失值的行,或者使用 fillna() 方法填充缺失值。在下面的实例中,我们将采用随机生成缺失值的方式来演示这一过程。

import pandas as pd

import numpy as np

# 生成一个包含 10 行、3 列数据的 dataframe

data = pd.DataFrame(np.random.randn(10, 3), columns=list('ABC'))

# 随机将 4 个元素设置为缺失值

data.iloc[[1, 4, 6, 9], [0, 1]] = np.nan

data.iloc[[2, 3, 5, 7], [1, 2]] = np.nan

# 输出含有缺失值的 dataframe

print(data)

# 删除包含缺失值的行

data_dropna = data.dropna()

print(data_dropna)

# 用 0 填充缺失值

data_fillna = data.fillna(0)

print(data_fillna)

通过上述代码,我们可以使用 dropna() 方法删除包含缺失值的行,使用 fillna() 方法将缺失值填充为指定的值。

2.2 数据类型转换

在 Pandas 中,有些列的数据类型可能并不是我们期望的类型,例如日期、整数等,这时我们需要将其转换为正确的类型。对于日期类型,可以使用 Pandas 的 to_datetime() 方法,对于其他类型,可以使用 astype() 方法。在下面的实例中,我们将演示如何将 pandas dataframe 中的字符串列转换为日期类型。

import pandas as pd

# 读取 CSV 文件并转换为 Dataframe

data = pd.read_csv('weather.csv')

# 查看数据类型

print(data.dtypes)

# 将时间列转换为日期类型

data['DATE'] = pd.to_datetime(data['DATE'])

# 再次查看数据类型

print(data.dtypes)

通过上述代码,我们可以将 CSV 文件中的时间列转换为 Pandas 中的日期类型。

3. 数据筛选

在 Pandas 中,我们可以使用 loc[] 方法根据某一列的特定值或者位置对数据进行筛选。在下面的实例中,我们将根据某一天的最高温度筛选出符合条件的天气数据,并且返回这些日期的最低温度。

import pandas as pd

# 读取 CSV 文件并转换为 Dataframe

data = pd.read_csv('weather.csv')

# 定义筛选条件

condition = data['TMAX'] > 30

# 筛选结果

selected_data = data.loc[condition, 'DATE':'TMIN']

# 输出结果

print(selected_data)

通过上述代码,我们可以根据某一天的最高温度条件筛选出符合要求的数据,并输出这些日期的最低温度。

4. 数据聚合

在数据分析中,经常需要对数据进行聚合操作,例如求平均值、求最大值、求最小值等等。在 Pandas 中,我们可以使用 groupby() 方法实现对数据的聚合操作。在下面的实例中,我们将根据年份对数据进行分组,并计算每年的平均最高温度。

import pandas as pd

# 读取 CSV 文件并转换为 Dataframe

data = pd.read_csv('weather.csv')

# 将日期列转换为日期类型

data['DATE'] = pd.to_datetime(data['DATE'])

# 将日期列设置为索引

data.set_index('DATE', inplace=True)

# 根据年份分组,并计算每年的平均最高温度

grouped_data = data.groupby(data.index.year)['TMAX'].mean()

# 输出结果

print(grouped_data)

通过上述代码,我们可以根据年份对天气数据进行分组,并求得每年的平均最高温度。

5. 数据可视化

在数据分析中,数据可视化是一种非常重要的技能,它可以帮助我们更直观地了解数据的特点和规律。在 Pandas 中,我们可以使用 plot() 方法对数据进行可视化处理。在下面的实例中,我们将绘制每日的最高温度和最低温度的折线图。

import pandas as pd

import matplotlib.pyplot as plt

# 读取 CSV 文件并转换为 Dataframe

data = pd.read_csv('weather.csv')

# 设置日期列为索引,并转换为日期类型

data.set_index('DATE', inplace=True)

data.index = pd.to_datetime(data.index)

# 绘制最高温度和最低温度的折线图

data.loc[:, ['TMAX', 'TMIN']].plot()

plt.show()

通过上述代码,我们可以绘制出天气数据的最高温度和最低温度折线图,从图中可以很直观地看出温度的变化规律。

后端开发标签