main02.py
"""
文件名: main02.py
功能: 主程序
中国五大城市PM2.5数据分析
任务:
- 统计每个城市每天的平均PM2.5的数值
- 基于天数对比中国环保部和美国驻华大使馆统计的污染状态
数据集来源:https://www.kaggle.com/uciml/pm25-data-for-five-chinese-cities
"""
import os
import pandas as pd
import numpy as np
import config
def preprocess_data(data_df, city_name):
"""
预处理数据集
参数:
- data_df: 数据DataFrame
- city_name: 城市名
返回:
- cln_data_df: 预处理后的数据集
"""
# 数据清洗,去掉存在空值的行
cln_data_df = data_df.dropna()
# 重新构建索引
cln_data_df = cln_data_df.reset_index(drop=True)
# 添加新的一列作为城市名
cln_data_df['city'] = city_name
# 输出信息
print('{}共有{}行数据,其中有效数据为{}行'.format(city_name, data_df.shape[0], cln_data_df.shape[0]))
print('{}的前10行有效数据:'.format(city_name))
print(cln_data_df.head())
return cln_data_df
def get_china_us_pm_df(data_df, suburb_cols):
"""
处理获取中国与美国统计的PM数据
参数:
- data_df: 包含城市PM值的DataFrame
- suburb_cols: 城市对应区的列名
返回:
- proc_data_df: 处理后的DataFrame
"""
pm_suburb_cols = ['PM_' + col for col in suburb_cols]
# 取PM的均值为中国环保部在该城市的测量值
data_df['PM_China'] = data_df[pm_suburb_cols].mean(axis=1)
# 取出有用的列构建新的DataFrame
proc_data_df = data_df[config.common_cols + ['city', 'PM_China']]
# 数据预览
print('处理后的数据预览:')
print(proc_data_df.head())
return proc_data_df
def add_date_col_to_df(data_df):
"""
将'year', 'month', 'day'合并成字符串列'date'
参数:
- data_df: 数据DataFrame
返回:
- proc_data_df: 处理后的数据集
"""
proc_data_df = data_df.copy()
# 将'year', 'month', 'day'合并成字符串列'date'
# 转换数据类型
proc_data_df[['year', 'month', 'day']] = proc_data_df[['year', 'month', 'day']].astype('str')
# 合并列
proc_data_df['date'] = proc_data_df['year'].str.cat([proc_data_df['month'], proc_data_df['day']], sep='-')
# 去除列
proc_data_df = proc_data_df.drop(['year', 'month', 'day'], axis=1)
# 调整列的顺序
proc_data_df = proc_data_df[['date', 'city', 'PM_China', 'PM_US Po