代码如下:(含部分代码)
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
import matplotlib.dates as mdate
#读取文件
csv_file = "air_quality.csv"
csv_data = pd.read_csv(csv_file, low_memory = False)#防止弹出警告
csv_df = pd.DataFrame(csv_data)
#查看数据维度
print(csv_df)
print(csv_df.shape)
print('\n')
#查看重复值
print(csv_df.duplicated(),'\n')
#查看缺失值
print(pd.isnull(csv_df),'\n')
#将NAN值换为0 pd.fillna 填补缺失值(df.where()函数可行)
print (csv_df.where(csv_df.notnull(), 0))
#将中位数的值填充
df_mid= (csv_df.loc[:,['O3 Value','NO2 Value','PM10 Value']])
print(df_mid.fillna(value=df_mid.median(axis=1)))
#生成新的文件
df_mid.to_csv('values1')
#计算有效值的和
for i in df_mid.columns:
print(df_mid[i].sum())
#print(df_mid.info())
#除去含缺失值的行 dropna()函数默认值 axis = 0 ,可以设置为 1
df_new =csv_df.dropna().reset_index(drop=True)
#print(df_new.info())
#开始使用新的DataFrame
#将object转化为datatime
df_new['Generated2'] = pd.to_datetime(df_new['Generated'],format='%d/%m/%Y')#将读取的日期转为datatime格式
#利用标签截取
df1 = (df_new.loc[:,['Generated2','O3 Value','NO2 Value','PM10 Value']])
df_da = (df_new.loc[:,['Generated2']])
#df1.to_csv('values')
#按时间统计数据,统计O3在不同日期Value 的总值,
df2 =df1.pivot_table(index='Generated2',aggfunc='sum')
print(df2)
fig2 = plt.figure( figsize=(15, 8),dpi=80)
x = np.linspace(0,30,30)
plt.bar(x-0.25,df2['O3 Value'],width=0.25,color='g',label='O3 Value', )
plt.bar(x,df2['NO2 Value'],width=0.25,color='b',label='NO2 Value')
plt.bar(x+0.25,df2['PM10 Value'],width=0.25,color='r',label='PM10 Value')
years = pd.date_range('2018-11-01',periods=30,freq='D')
print(years)
plt.xticks(range(30),years,rotation=90)
plt.legend(loc="upper left")
plt.xlabel('time')
plt.show()
#使用pandas库的画图方法
#df2.plot(kind='bar')
plt.show()
'''
fig1 = plt.figure( figsize=(15, 8),dpi=80)
#使用add_subplot在窗口加子图,其本质就是添加坐标系
ax1 = fig1.add_subplot(1,1,1)
#绘制曲线
ax1.plot(df2.index,df2['O3 Value'],color='g')
ax1.plot(df2.index,df2['NO2 Value'],color='b')
ax1.plot(df2.index,df2['PM10 Value'],color='r')
plt.legend(loc="upper left")
plt.show()
'''
'''
#柱状堆叠图
fig3 = plt.figure(num=1, figsize=(15, 8),dpi=80)
ax3 = fig3.add_subplot(1,1,1)
ax3.bar(df2.index,df2['O3 Value']+df2['NO2 Value']+df2['PM10 Value'], width/4,color='r',label="PM10 Value")
ax3.bar(df2.index,df2['O3 Value']+df2['NO2 Value'], width/4,color='b',label="NO2 Value")
ax3.bar(df2.index,df2['O3 Value'], width/4 ,color='g',label="O3 Value")
plt.legend(loc="upper left")
plt.show()
'''
'''
#折线堆叠图
fig4 = plt.figure(num=1, figsize=(15, 8),dpi=80)
x = np.linspace(0,30,30)
ax4 = fig4.add_subplot(1,1,1)
plt.stackplot(x , df2['O3 Value'],df2['NO2 Value'] ,df2['PM10 Value'],colors=['m','c','r'],labels=['O3 Value','NO2 Value','PM10 Value'], )
years = pd.date_range('2018-11-01',periods=30,freq='D')
plt.xticks(range(30),years,rotation=90)
plt.xlabel('time')
plt.legend(loc="upper left")
plt.show()
'''
···