Python对空气质量数据的预处理

该代码示例展示了如何使用Python的pandas和numpy库处理多个CSV文件,合并数据并去除重复项,将特定列转换为浮点数,按日期和类型分组计算平均值,然后按日期排序。最后,它将不同空气污染物类型的数据(如CO、NO2、O3、PM10、PM2.5和SO2)提取出来,创建一个新的数据集并保存为CSV文件。
摘要由CSDN通过智能技术生成

获取到的数据

得到的数据

导入的包

import numpy as np
import pandas as pd
import os
import glob

拿到的数据文件集,在 ./DataSet/20230101-20230506 下的数据包

 

读取所有文件 并写入到./DataSet/2023_china_cities.csv 只选取自己要的'date','hour','type','太原'

csv_list = glob.glob('DataSet/20230101-20230506/*csv')
print('共发现%s个csv文件'% len(csv_list))

count =0
for i in csv_list:
    count+=1;
    print(count)
    fr = open(i,'r',encoding='utf-8').read()
    with open('DataSet/2023_china_cities.csv','a',encoding='UTF-8') as f:
        f.write(fr)

data = pd.read_csv('./DataSet/2023_china_cities.csv',
 engine = 'python',
 error_bad_lines = False,
 usecols=['date','hour','type','太原'])

去重、将数据化成小数格式 object -> float 

# 去除重复行
df1 = data.drop_duplicates()
# 去除空值
df1 = df1.dropna(axis=0)
df1['太原'] = df1['太原'].astype(float)

 按照时间类型分类,并重置索引为时间。后续会将时间object ->datetime

# 给出的是每小时的数据 求平均得到当天的平均值
df2 = df1.groupby(by=['date','type']).mean()
df2
# 创建一个新的索引 将date列转化为时间
df3 = df2.reset_index()
df3.set_index('date')
df3.sort_index(ascending = True,inplace = True)

 从行索引中提取type类型的关键词为列索引,逐一改名

dfCO = df3[df3['type'] == 'CO'][['date','太原']].set_index('date')
dfCO = dfCO.rename(columns={'太原':'CO'}).round(3)
df4 = pd.concat([df3test,dfCO],ignore_index = False,axis = 1)

dfNO2 = df3[df3['type'] == 'NO2'][['date','太原']].set_index('date')
dfNO2 = dfNO2.rename(columns={'太原':'NO2'}).round(3)
df4 = pd.concat([df4,dfNO2],ignore_index = False,axis = 1)


dfO3 = df3[df3['type'] == 'O3'][['date','太原']].set_index('date')
dfO3 = dfO3.rename(columns={'太原':'O3'}).round(3)
df4 = pd.concat([df4,dfO3],ignore_index = False,axis = 1)

dfPM10 = df3[df3['type'] == 'PM10'][['date','太原']].set_index('date')
dfPM10 = dfPM10.rename(columns={'太原':'PM10'}).round(3)
df4 = pd.concat([df4,dfPM10],ignore_index = False,axis = 1)

dfPM25 = df3[df3['type'] == 'PM2.5'][['date','太原']].set_index('date')
dfPM25 = dfPM25.rename(columns={'太原':'PM2.5'}).round(3)
df4 = pd.concat([df4,dfPM25],ignore_index = False,axis = 1)

dfSO2 = df3[df3['type'] == 'SO2'][['date','太原']].set_index('date')
dfSO2 = dfSO2.rename(columns={'太原':'SO2'}).round(3)
df4 = pd.concat([df4,dfSO2],ignore_index = False,axis = 1)

 将文件输出到DataSet.csv中

# 把结果输出到数据库
outputpath = 'DataSet.csv'
df4.to_csv(outputpath,sep = ',',index = True,header = True)

后续每处理一个年份,都需要将DataSet.csv文件打开,并读取csv中的文件和处理好的数据concat,最后得到总数据。3256条 

空气质量数据进行多元线性回归分析的步骤如下: 1. 读取数据 首先,使用pandas库中的`read_csv()`函数或其他适合的函数读取空气质量数据,将其转换为DataFrame对象。例如: ```python import pandas as pd # 读取数据 data = pd.read_csv('air_quality_data.csv') ``` 2. 数据预处理 在进行多元线性回归分析前,需要对数据进行预处理,包括数据清洗、数据标准化等。 - 数据清洗:对数据中的缺失值、异常值进行处理,保证数据的准确性和完整性。 ```python # 去除空值 data = data.dropna() ``` - 数据标准化:将数据按照一定的比例缩放,使得数据具有可比性。 ```python from sklearn.preprocessing import StandardScaler # 标准化数据 scaler = StandardScaler() data[['PM2.5', 'PM10', 'SO2', 'NO2', 'CO', 'O3']] = \ scaler.fit_transform(data[['PM2.5', 'PM10', 'SO2', 'NO2', 'CO', 'O3']]) ``` 3. 多元线性回归模型的建立 使用Scikit-learn库中的`LinearRegression()`函数建立多元线性回归模型。 ```python from sklearn.linear_model import LinearRegression # 建立多元线性回归模型 X = data[['PM2.5', 'PM10', 'SO2', 'NO2', 'CO', 'O3']] Y = data['AQI'] model = LinearRegression() model.fit(X, Y) ``` 4. 模型评估 使用模型对数据进行拟合后,需要对模型进行评估,以评估模型的拟合效果。 - 可以使用Scikit-learn库中的`score()`函数计算模型的拟合度(R^2)。 ```python r_sq = model.score(X, Y) print('R^2:', r_sq) ``` - 可以使用Scikit-learn库中的`mean_squared_error()`函数计算均方误差(MSE)。 ```python from sklearn.metrics import mean_squared_error y_pred = model.predict(X) mse = mean_squared_error(Y, y_pred) print('MSE:', mse) ``` 5. 模型应用 使用已建立的多元线性回归模型对新数据进行预测。 ```python new_data = [[35, 70, 13, 30, 0.5, 50]] predicted_aqi = model.predict(new_data) print('Predicted AQI:', predicted_aqi) ``` 以上就是对空气质量数据进行多元线性回归分析的基本步骤。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值