一些读excel和画图的技巧

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的非常好的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值