作为一个学习了很长时间的Python的我来说,Python 他能干什么,其实在铺天盖地的广告,已经告诉你它能干什么了。但是我告诉你的是,你通过广告接触的python 速成小课,你学完它之后,你并不能处理任何工作上的问题.
Python的精髓在于:它有丰富的模块库,我们的课程是重点拿爬虫来讲模块库的调用。就像一个app商店,全球开发者共同维护,任何人都可以调用,学会模块调用,才真正打开了python的大门。
编程在于积累,在于积累前辈们的代码,以及去思考如何创新自己的代码。
其实大多数自动化办公的人,就是处理Excel 等数据。
处理Excel 用到的模块这里我给大家总结,希望大家不要走弯路
1、openpyxl
其实大多数这两个情况下就可以了。首先我们介绍的是openpyxl 它能对Excel 做什么。
2、Pandas
pandas是一种快速,强大,灵活且易于使用的开源数据分析和处理工具,它
建立在Python编程语言之上。
案例1:租房数据案例分析
1、读取Excel 中的租房数据
import pandas as pd
excel_path = 'E:\\Python_Office_Auto\\Day7\\house.xlsx'
houses = pd.read_excel(excel_path)
2、查看Excel中的数据有多少行,多少列
print(houses.shap)
# (9869行, 18列)
3、通过head打印出前5行数据
print(houses.head())
''' 楼盘名称 ... 标签0 北京花园亮马桥朝阳公园南北四居燕莎友谊商城手慢无 ... 采光好/南北通透1 传媒第二外国语学院南门旁三间房南里7号院两居室 ... NaN2 荣尊堡多套两居出租,车位充足,看房随时 ... NaN3 六号线黄渠柏林爱乐精装一居家电齐全随时看房包物业取暖 ... 首次出租/全装全配/交通便利4 朝庭104平两居室精心装修看房效果很好随时起租 ... NaN
'''
#说明:当一个Excel 数据,非常大的时候,你手动打开一个Excel 文件去了解它,那是真的太难受了。打开巨大Excel表格都晓得。 如果你的列特别多,使用pandas查询数据的时候,会默认隐藏中间的列。
4、columns 来查询列名。
print(houses.columns)
'''Index(['楼盘名称', '租赁方式', '户型', '面积', '朝向', '房租', '更新时间', '采集时间', '城市', '区域', '街道或片区', '地段', '地址', '公交站', '主图链接', '楼盘详情链接', '页面网址', '标签'], dtype='object')'''
说明:我们可以很清晰看到Excel中每个列名的名字。然后我们就可以通过列名轻松加愉快的去访问他们了。
也可以通过负索引,查询出最后一列的名字
houses.columns[-1]# '标签'
5、筛选数据,查看朝向中,朝北,朝南的数据,并且只显示列(楼盘名称、面积)即可
houses.loc[houses.朝向.isin(['朝北', '朝南',]), ['楼盘名称','面积']].head(5)
''' 楼盘名称面积0 北京花园亮马桥朝阳公园南北四居燕莎友谊商城手慢无 268㎡1 传媒第二外国语学院南门旁三间房南里7号院两居室 65㎡3 六号线黄渠柏林爱乐精装一居家电齐全随时看房包物业取暖 55㎡5 周庄嘉园东里次卧出租 18㎡6 工体西里朝南精装两居三里屯朝阳门东四十条 78㎡'''
通过筛选,一下子就能得到我们想要的数据。是不是非常简单,快来尝试一下把。
数据可以添加我们的QQ学习交流群367203382,找群主获取。
6、处理带有字符串数字的钱
houses.房租.head()'
''0 35000元/月1 4300元/月2 15000元/月3 5500元/月4 13500元/月Name: 房租, dtype: object'''houses.房租= houses.房租.str.split('元',expand=True)[0].astype("int")houses.房租.head()'''0 350001 43002 150003 55004 13500Name: 房租, dtype: int32'''
说明:我们要统计金额最大的数字,带有元/月的字符串是无法进行统计的。
所以我们要把元/月给他过滤掉。 使用split函数即可。
如果后续有更加过滤话的需求,字符串的函数已经无法满足你,可以结合lambda函数来进行过滤。可以达到同样的效果。
houses.房租= houses.房租.apply(func = lambda x:int(x.split('元')[0]))
7、获取房租最贵的前5行数据
df_max_5 = houses.sort_values('房租').tail(5)
楼盘名称面积房租
2416后海 什刹海 恭王 府柳荫街大型精装四合院 带车库 接待会所 1000㎡ 400000
5190后海什刹海精装四合院 带车库 露台 古香古色 1000㎡ 416700
5136后海什刹海精装四合院 带车库 露台 古香古色 1000㎡ 416700
5135西城区后海什刹海四合院专业接待商务会所四合院出租 2500㎡ 625000
4467金融街 阜成门 西四 豪华型正规三进四合院 6400㎡ 1900000
说明我们使用sort_values函数,让我们的房租,先排好序。默认是升序。就是
第一行最小,1,2,3,4. 。当我们的价格按照小学生的身高一样排好之后。身高最高的5位,
我们走到后排。从结尾开始数倒数,获取5个学生不就可以了吗。道理就是这样简单。
这里我们使用tail函数,实现这样的功能。、
因为我们这是真实数据,可以看得出来,有钱人的生活我们是真的不懂。
1百九十万 每个月的四合院,有的人租下来可能就是单纯为了睡觉。
8、获取房租最便宜的前5行数据
df_min_5 = houses.sort_values('房租').head(5)
df_min_5.loc[:,['楼盘名称','面积','房租']]
楼盘名称面积房租
9616北京时代广场 全新家电 家电齐全 正规居室 卧室南向 11㎡ 1000
8660 1000大开间,燕郊租房都可以联系我 42㎡ 1000
9617北京时代广场 一客一锁 精装全齐 配套齐全 卧室南向 11㎡ 1000
8701燕郊开发区,燕顺路,星河皓月 64㎡ 1000
9188个人合租,无中介费,中介勿扰,传销勿扰,押一付一,次卧600 15㎡ 1000
说明,如果想取出最便宜的房租,那我们直接使用head数据,提取前5个数据,就行了。
从这里看出来,最便宜的房租1千大洋每个月,最贵的房租1百90万大洋每个月。
从房子的价格就能看出来,离北京越远房租越便宜,离北京越近,房租还在1千的,房间小的已经只能放得下一张床。 数据的真相就是让人头大。
9、统计每个区域发布了多少房租租赁信息
houses.区域.value_counts()
# 返回区域关联的数据行数,默认降序'''西城 4996朝阳 2040北京周边 739密云 712门头沟 680燕郊 323旅游地产 191延庆 97怀柔 86平谷 5Name: 区域, dtype: int64'''
说明:还有第二种方式,通过分组统计
houses.groupby('区域')[['房租']].count()
房租
区域
北京周边739
密云712
平谷5
延庆97
怀柔86
旅游地产191
朝阳2040
燕郊323
西城4996
门头沟680
10、从数据里,筛选出房租大于28w的数据
houses.loc[houses.房租>=280000,['楼盘名称','面积','房租']].head()
楼盘名称面积房租
995样板间设计 拎包入住+泳池+范思哲和芬迪家具 1500㎡ 400000
2351后海什刹海四合院出租 1000㎡ 300000
2381后海什刹海四合院出租 1000㎡ 300000
2397后海什刹海四合院出租 1000㎡ 300000
2416后海 什刹海 恭王 府柳荫街大型精装四合院 带车库 接待会所 1000㎡ 400000
说明:通过loc来筛选数据,也可以使用
houses[houses.房租>=280000].head()
可以通过len函数直接获取 大于28w 的房租有多少个
len(houses[houses.房租>=280000])
# 68
房租大于28w每个月的房子往外出租的还真不多。
11、统计比较受欢迎的租金价格
# 统计租金出现的次数
hot_counts = houses.房租.value_counts()
# 统计某一个确定价格的租金出现超过1百50次的
top_counts = hot_counts[hot_counts >=150]print(top_counts)
'''1800 2578000 19212000 1847000 1821500 1766500 152Name: 房租, dtype: int64'''# 通过索引获取1800 是最受欢迎的价格print(top_counts.index[0]) #输出:1800
说明value_counts是个经常使用的函数,很方便的统计某一列中,某个数值出现了多少次。
我们可以统计出每个月1800的 房租,才是最受欢迎的,因为我们毕竟是最底层的打工人。
还有更多案例均在我们Python学习交流群:367203382