import xlrd
path='D:\全国.xlsx'
data=xlrd.open_workbook(path)
sheet=data.sheet_by_name('Sheet1')
i=1
dict1={}
dict2={}
city=[]
while True:
try:
c=sheet.cell_value(i,0)
city.append(c)
i+=1
except:
break
print(city)
'''
dict1是字典,键是各个城市,值是每个小时段的集货量
dict2键是各个城市,值是每个时段的集货率
'''
m=1
for ct in city:
for n in range(24):
dict1.setdefault(ct,[]).append(sheet.cell_value(m,n+1))
dict2.setdefault(ct,[]).append(sheet.cell_value(m,n+1))
m+=1
#print(dict)
#print(dict['731'])
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]
y1=[1.26794872e+01, 3.66666667e+01 ,4.27820513e+01, 4.70384615e+01,
4.82948718e+01, 4.85641026e+01 ,5.77051282e+01 ,8.97692308e+01,
2.07000000e+02 ,4.51653846e+02 ,9.64320513e+02 ,1.77894872e+03,
2.54962821e+03 ,3.05844872e+03, 3.62016667e+03 ,4.45155128e+03,
5.62094872e+03, 7.45988462e+03, 1.02874872e+04 ,1.19658846e+04,
1.24855897e+04 ,1.26776923e+04 ,1.27428590e+04, 1.27527949e+04]
sub_axix = filter(lambda x:x%200 == 0, x)
plt.title('一典型曲线')
plt.plot(x, y1, color='gray', label='0,78')
plt.legend() #显示图例
plt.show()
以上为python画图经典代码,最近在做一个项目需要画图,一开始老大让我用R画,我以前R用的少,不熟悉,所以就用python画了,主要用到了matplotlib中的pyplot子库,该库提供了一批友好的画图函数,方便使用。
注意两句显示字体的函数不能省略,否则标题的中文无法识别
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
现在经常要用到python中的字典结够,值往往是一个列表,下面的函数就很常用
dict.setdefault(键,[]).append()
目前在工作中经常要用到python读取excel中的数据,大概有两种方式,第一张是用xlrd模块,还有就是用pandas模块,两种方式各有优劣,在前面的方式中,用的是xlrd模块,该模块主要是用来读具体每一列的数据,比如把一行数据读入一个列表。而pandas主要是来读取整体的excel数据,而不太关心具体每一列的细节,在另一篇博文实现聚类的文章中就是用的pandas读的数据,因为我们更关心整体,而不是局部。
另外还有一个小技巧,在读excel数据时可以使用while true+try的组合,就会一行行往下读,但一定要加try,否则就会有溢出的现象,这是一个度excel的非常好的方法。