《图解Pandas教程》:一周年啦
今天4-24是个特殊的日子:尤而小屋的《图解Pandas》系列一周年!
从爆炸函数开始
从2021-04-24的第一篇《一切从爆炸函数开始》,到最近的一篇《Pandas的10大索引+5大基操》,刚好历时了365天,让Pandas来见证吧:
两行代码就可以查看两个任意日期时间相隔的天数,这仅仅是Pandas众多功能的冰山一角👏
当时爆炸函数使用的一个案例:
为什么写《图解Pandas》
Pandas是一个Python的一个第三方数据处理和分析的库,当自己在学习Python数据分析、数据挖掘、机器学习的时候,绕不开Pandas的。
所以,从去年开始就一直坚持写这个系列,大部分的知识点以前都有接触过,但是没有系统地整理出来,一年写下来也算是温故而知新,同时自己也学习到了很多新的知识点。
文章中出现过的部分思维导图:
这一年写了什么?
第一部分:基础操作
- Pandas简介+Series、DataFrame的创建
- Pandas中五花八门的取数技巧(太多了)
- 基于Pandas的数据探索+数据类型转换
- Pandas的10大索引
- 多层索引的6种方法
第二部分:技巧部分
这个是重点部分,也是需要经常用到的功能部分:
- groupby机制
- 排名rank机制
- 排序sort_values机制
- 重复值+缺失值处理
- 数据合并
- 轴旋转
- 透视表生成
- 自定义排序功能
第三部分:实用函数
- map+apply+applymap
- 移位函数shift
- 派生函数assign
- 行列转换:melt、transpose、wide_to_long、explode
- transform
- 文本处理双雄:extract、extractall
- 20个统计函数
第四部分:配置+美化
- pandas内置绘图
- pandas表格美颜
- pandas的配置技巧
第五部分:对比SQL,学习Pandas
- 窗口函数功能实现
- groupby机制对比
- group_concat
- 数据合并与连接
文章爬虫
下面通过爬虫的方法从微信后台获取文章标题、发文时间等信息
找错了方向
一开始小编是准备直接从微信的后台获取到相关网页的源码,然后通过正则表达式从源码中解析出来:标题+时间
1、源码在这里
上面每一对<li>
标签就包含一篇文章的基本信息,一开始很开心的!
2、以第一篇文章为例:标题和发文时间藏在这里
微信牛逼:本来小编是准备直接将这段前端的代码进行复制,然后拿去正则解析,居然不能copy!!!微信棒棒👍
于是小编又去网页那边折腾了:终于又找到了我们想要的信息。
而且,微信公众号的后台是发送的ajax请求,多滚动几次,所有的文章才全部显示出来(上面的左边)
找对了方向
我们发送请求来获取数据:成功get数据!
尝试解析一个URL下的信息:
- 标题
- 发文时间(时间戳,后续处理)
- 是否付费
- 是否可读
获取全部信息
1、构造整体URL
数据处理
1、索引重置
2、时间戳转化
转化成功:
3、时间排序
有几篇文章重复发过,我们来删除下:
通过title字段来删除重复值:再进行统计的时候就没有重复值了
付费与否
统计了下,总共是53篇文章,有2篇是付费的,谢谢付费的粉丝~
发文规律
1 | df["create_time"] = pd.to_datetime(df["create_time"]) |
新增加3个字段:
1 | df["year"] = df["create_time"].dt.year # 年份 |
年份对比
可以看到目前大部分还是2021年发的文章,不过相信今年会超过去年的~
1 | import plotly_express as px |
月份对比
1 | fig = px.treemap( |
发文时间点
统计每个时间点的发文数量**:0点发文这么多**!!!!(一般文章都是定时发的)
可以得到两点主要的结果:
- 0点按时发文真的是习惯了
- 大部分文章都是晚上回来写好了再发的
年份+时间点
1 | px.bar(df4,x="hour",y="number",barmode="group",color="year") |
对比2022年和2021年的发文时间点:
1 | fig = px.bar(df4, |
总结一点:少熬夜吧!!!
文章特色
自己在写作的过程中,参考了官网和很多资料,也有自己平时使用的一些心得,总结下几个特色:
- 案例丰富:每篇文章都是通过案例的模拟来进行说明
- 图文并茂:文章使用了大量的图形来解释函数的使用,更加直观,加深印象
- 贴近业务:很多模拟数据和逻辑都是可以直接套用在真实的业务场景中
- 源码实在:全部在jupyter notebook中,运行即可得到效果!
后续工作
目前写的内容真的仅仅是Pandas库的冰山一角,还有很多的内容没有展开。但是如果读者能够认真看完,并且自己实际去运行和理解代码,相信入门pandas必定是问(听)题(你)不(吹)大(牛)!
📢📢📢公告:《Pandas数据分析训练营-第一期》5月中旬即将开始,欢迎咨询小编!如果有问题,也可以一起交流~