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