import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
df = pd.read_csv('/Users/PycharmProjects/newwork/BeijingPM20100101_20151231.csv')
df.head(3)
|
No |
year |
month |
day |
hour |
season |
PM_Dongsi |
PM_Dongsihuan |
PM_Nongzhanguan |
PM_US Post |
DEWP |
HUMI |
PRES |
TEMP |
cbwd |
Iws |
precipitation |
Iprec |
| 0 |
1 |
2010 |
1 |
1 |
0 |
4 |
NaN |
NaN |
NaN |
NaN |
-21.0 |
43.0 |
1021.0 |
-11.0 |
NW |
1.79 |
0.0 |
0.0 |
| 1 |
2 |
2010 |
1 |
1 |
1 |
4 |
NaN |
NaN |
NaN |
NaN |
-21.0 |
47.0 |
1020.0 |
-12.0 |
NW |
4.92 |
0.0 |
0.0 |
| 2 |
3 |
2010 |
1 |
1 |
2 |
4 |
NaN |
NaN |
NaN |
NaN |
-21.0 |
43.0 |
1019.0 |
-11.0 |
NW |
6.71 |
0.0 |
0.0 |
period=pd.PeriodIndex(year=df['year'],month=df['month'],day=df['day'],hour=df['hour'],freq='H')
type(period)
pandas.core.indexes.period.PeriodIndex
print(period)
PeriodIndex(['2010-01-01 00:00', '2010-01-01 01:00', '2010-01-01 02:00',
'2010-01-01 03:00', '2010-01-01 04:00', '2010-01-01 05:00',
'2010-01-01 06:00', '2010-01-01 07:00', '2010-01-01 08:00',
'2010-01-01 09:00',
...
'2015-12-31 14:00', '2015-12-31 15:00', '2015-12-31 16:00',
'2015-12-31 17:00', '2015-12-31 18:00', '2015-12-31 19:00',
'2015-12-31 20:00', '2015-12-31 21:00', '2015-12-31 22:00',
'2015-12-31 23:00'],
dtype='period[H]', length=52584, freq='H')
df['datatime'] = period
df.head(5)
|
No |
year |
month |
day |
hour |
season |
PM_Dongsi |
PM_Dongsihuan |
PM_Nongzhanguan |
PM_US Post |
DEWP |
HUMI |
PRES |
TEMP |
cbwd |
Iws |
precipitation |
Iprec |
datatime |
| 0 |
1 |
2010 |
1 |
1 |
0 |
4 |
NaN |
NaN |
NaN |
NaN |
-21.0 |
43.0 |
1021.0 |
-11.0 |
NW |
1.79 |
0.0 |
0.0 |
2010-01-01 00:00 |
| 1 |
2 |
2010 |
1 |
1 |
1 |
4 |
NaN |
NaN |
NaN |
NaN |
-21.0 |
47.0 |
1020.0 |
-12.0 |
NW |
4.92 |
0.0 |
0.0 |
2010-01-01 01:00 |
| 2 |
3 |
2010 |
1 |
1 |
2 |
4 |
NaN |
NaN |
NaN |
NaN |
-21.0 |
43.0 |
1019.0 |
-11.0 |
NW |
6.71 |
0.0 |
0.0 |
2010-01-01 02:00 |
| 3 |
4 |
2010 |
1 |
1 |
3 |
4 |
NaN |
NaN |
NaN |
NaN |
-21.0 |
55.0 |
1019.0 |
-14.0 |
NW |
9.84 |
0.0 |
0.0 |
2010-01-01 03:00 |
| 4 |
5 |
2010 |
1 |
1 |
4 |
4 |
NaN |
NaN |
NaN |
NaN |
-20.0 |
51.0 |
1018.0 |
-12.0 |
NW |
12.97 |
0.0 |
0.0 |
2010-01-01 04:00 |
df.set_index('datatime',inplace=True)
df.head(5)
|
No |
year |
month |
day |
hour |
season |
PM_Dongsi |
PM_Dongsihuan |
PM_Nongzhanguan |
PM_US Post |
DEWP |
HUMI |
PRES |
TEMP |
cbwd |
Iws |
precipitation |
Iprec |
| datatime |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2010-01-01 00:00 |
1 |
2010 |
1 |
1 |
0 |
4 |
NaN |
NaN |
NaN |
NaN |
-21.0 |
43.0 |
1021.0 |
-11.0 |
NW |
1.79 |
0.0 |
0.0 |
| 2010-01-01 01:00 |
2 |
2010 |
1 |
1 |
1 |
4 |
NaN |
NaN |
NaN |
NaN |
-21.0 |
47.0 |
1020.0 |
-12.0 |
NW |
4.92 |
0.0 |
0.0 |
| 2010-01-01 02:00 |
3 |
2010 |
1 |
1 |
2 |
4 |
NaN |
NaN |
NaN |
NaN |
-21.0 |
43.0 |
1019.0 |
-11.0 |
NW |
6.71 |
0.0 |
0.0 |
| 2010-01-01 03:00 |
4 |
2010 |
1 |
1 |
3 |
4 |
NaN |
NaN |
NaN |
NaN |
-21.0 |
55.0 |
1019.0 |
-14.0 |
NW |
9.84 |
0.0 |
0.0 |
| 2010-01-01 04:00 |
5 |
2010 |
1 |
1 |
4 |
4 |
NaN |
NaN |
NaN |
NaN |
-20.0 |
51.0 |
1018.0 |
-12.0 |
NW |
12.97 |
0.0 |
0.0 |
data = df['PM_US Post'].dropna()
plt.figure(figsize=(20,8),dpi=80)
_x = data.index
_y = data.values
plt.plot(range(len(_x)),_y)
df = df.resample('7D').mean()
df.head(5)
|
No |
year |
month |
day |
hour |
season |
PM_Dongsi |
PM_Dongsihuan |
PM_Nongzhanguan |
PM_US Post |
DEWP |
HUMI |
PRES |
TEMP |
Iws |
precipitation |
Iprec |
| datatime |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2010-01-01 |
372.5 |
2010.0 |
1.0 |
16.0 |
11.5 |
4.0 |
NaN |
NaN |
NaN |
90.40367 |
-17.013441 |
46.449597 |
1028.009409 |
-6.162634 |
41.227325 |
0.015054 |
0.177688 |
| 2010-01-08 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
| 2010-01-15 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
| 2010-01-22 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
| 2010-01-29 |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
NaN |
data = df['PM_US Post'].dropna()
_x = data.index
_y = data.values
plt.figure(figsize=(20,8),dpi=80)
<Figure size 1600x640 with 0 Axes>
<Figure size 1600x640 with 0 Axes>
plt.plot(range(len(_x)),_y)
plt.xticks(range(0,len(_x),10),list(_x)[::10],rotation=45)
plt.show()

两组数据对比:
df = pd.read_csv('/Users/marvinking/PycharmProjects/newwork/BeijingPM20100101_20151231.csv')
period=pd.PeriodIndex(year=df['year'],month=df['month'],day=df['day'],hour=df['hour'],freq='H')
df['datatime'] = period
df.set_index('datatime',inplace=True)
df = df.resample('7D').mean()
data = df['PM_US Post']
data_cn = df['PM_Nongzhanguan']
_x = data.index
_x = [i.strftime("%Y%m%d") for i in _x]
_x_china = [i.strftime("%Y%m%d") for i in data_cn.index]
_y = data.values
_y_china = data_cn.values
plt.figure(figsize=(20,8),dpi=80)
plt.plot(range(len(_x)),_y,label="US_POST",alpha=0.7)
plt.plot(range(len(_x_china)),_y_china,label="CN_POST",alpha=0.7)
plt.xticks(range(0,len(_x_china),10),list(_x_china)[::10],rotation=45)
plt.legend(loc="best")
plt.show()
