import matplotlib.pyplot as plt import pandas as pd import requests import io import numpy as np import pylab pylab.style.use('bmh') from pylab import rcParams rcParams['figure.figsize'] = 10, 8
defmoving_average(l, N): sum = 0 result = list( 0for x in l) for i inrange( 0, N ): # 从左到右逐渐添加index在N之内的数字 sum = sum + l[i] result[i] = sum / (i+1) for i inrange( N, len(l) ): # 加入最右边数字减去最左边数字 sum = sum - l[i-N] + l[i] result[i] = sum / N return result # 使用效率更高的numpy # http://stackoverflow.com/questions/13728392/moving-average-or-running-mean deffast_moving_average(x, N): return np.convolve(x, np.ones((N,))/N)[(N-1):] url = '铁路客运量.csv'
df = pd.read_csv(url) # python2使用StringIO.StringIO data = np.array(df['铁路客运量_当期值(万人)']) dic = {} for i in [3,5,10,20]: ma_data = moving_average(data, i) dic[i] = ma_data ma_data_df = pd.DataFrame(dic)