import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['STFangsong']
plt.rcParams['axes.unicode_minus'] = False
%config InlineBackend.figure_format = 'svg'
数据分析的一般流程
-
提取数据(筛选)
- 布尔索引
query()
:相当于布尔索引drop()
:删除指定的行或列rename()
:重命名行或列索引reset_index()
:重置索引(将索引变成普通列)set_index()
:设置索引(将一个列或多个列指定为索引)reindex()
:调整行或列索引的顺序(还可以做花式索引)
-
整合和重塑
merge()
:实现两个DataFrame对象的内连接或外连接(适用于两张表有关联)。concat()
:将两个或多个DataFrame的数据拼接到一起(适用于多张表结构一致)。
-
数据清洗(缺失值、重复值、异常值)
-
缺失值:
dropna()
:删除空值fillna()
:填充空值 <— 均值、中位数、众数isnull()
/notnull()
:判断空值
-
重复值:
duplicated()
:判断是否重复drop_duplicates()
:删除重复值
-
异常值:
- 异常值 / 极端值 / 离群值
drop()
:删除replace()
:替换
-
预处理:
apply()
:将函数作用到数据上,需要指定在哪个轴上执行transform()
:将(多个)函数作用到数据上applymap()
:对每个元素使用指定的函数进行映射,相当于Series
上的map()
方法 —> elementwise
注意:这三个方法都是高阶函数的用法,
apply()
方法接受的函数,可以是带归约性质的函数(聚合函数),也可以是没有归约性质的函数。transform()
方法接受的函数不能是带归约功能的函数,只能是对数据做变换的函数,简单的说就是函数的执行不会减少数据的量。 -
-
数据透视(排序、分组、聚合)
- 透视表:根据A统计B(根据A列对数据进行分组,再对B列上聚合函数)
groupby()
—>sum()
/mean()
/max()
/ …pivot_table()
—> 专门生成透视表的函数cut()
—> 数据离散化(分箱)
-
数据可视化(统计图表)
-
数据的洞察(发现问题给出建议)
Example 1
df = pd.read_csv('../files/data/bilibili.csv',encoding = 'GBK')
df
title | url | watchnum | dm | uptime | upname | |
---|---|---|---|---|---|---|
0 | 阿里云大学课程(云计算、中间件、大数据、云安全) | //www.bilibili.com/video/BV1Lv411s7wu?from=search | 2954 | 4 | 2021/1/21 | 韭菜滚雪球 |
1 | 视觉传达设计专业的小朋友大学课程有哪些,强度怎么样,需要什么技能?学姐给新生的解答与建议 | //www.bilibili.com/video/BV1Ea4y1a7CX?from=search | 3526 | 8 | 2020/7/25 | 铧仔仔儿的奋斗史 |
2 | CAP:适合高中生的大学课程(上大学之前提前学习大学的课程)同济大学《微积分CAP》 | //www.bilibili.com/video/BV1X4411Y7u8?from=search | 5597 | 17 | 2019/5/11 | 愚甘杂货铺 |
3 | 干货!论文读写系列|写作风格:例文解析(1)|人文社科|教育学|大学课程、知识 | //www.bilibili.com/video/BV1VC4y1b7ZA?from=search | 1.1万 | 29 | 2020/7/26 | cici西西熙熙 |
4 | 《用户体验与心理-第1期》大学课程 | //www.bilibili.com/video/BV1r7411M7gY?from=search | 1373 | 9 | 2020/2/24 | Luka老师 |
... | ... | ... | ... | ... | ... | ... |
1902 | 【中国石油大学】构造地质学(第1-2章) ——主讲:李理老师 | //www.bilibili.com/video/BV1Y4411x7sE?from=search | 4097 | 5 | 2019/5/2 | 點點滴滴Super |
1903 | 【模电】模拟电子技术基础【四】 | //www.bilibili.com/video/BV1sb411v7E6?from=search | 5997 | 11 | 2019/3/8 | 干脆的非洲鼓 |
1904 | 【模电】模拟电子技术基础【三】 | //www.bilibili.com/video/BV1Rb411i7yo?from=search | 4713 | 8 | 2019/3/5 | 干脆的非洲鼓 |
1905 | 结构化学-东北大学-王军 | //www.bilibili.com/video/BV1yb411t7Mb?from=search | 5835 | 2 | 2019/2/28 | 万万万万不能怂 |
1906 | 《结构化学》南开大学-孙宏伟 重点难点解析 | //www.bilibili.com/video/BV1yt411t7UG?from=search | 5287 | 6 | 2019/1/28 | 阿bu爱学习 |
1907 rows × 6 columns
def handle_num(n):
if n[-1] == '万':
return int(float(n[:-1]) * 10000)
return int(n)
df['watchnum'] = df.watchnum.map(handle_num)
df['dm'] = df.dm.map(handle_num)
df
title | url | watchnum | dm | uptime | upname | |
---|---|---|---|---|---|---|
0 | 阿里云大学课程(云计算、中间件、大数据、云安全) | //www.bilibili.com/video/BV1Lv411s7wu?from=search | 2954 | 4 | 2021/1/21 | 韭菜滚雪球 |
1 | 视觉传达设计专业的小朋友大学课程有哪些,强度怎么样,需要什么技能?学姐给新生的解答与建议 | //www.bilibili.com/video/BV1Ea4y1a7CX?from=search | 3526 | 8 | 2020/7/25 | 铧仔仔儿的奋斗史 |
2 | CAP:适合高中生的大学课程(上大学之前提前学习大学的课程)同济大学《微积分CAP》 | //www.bilibili.com/video/BV1X4411Y7u8?from=search | 5597 | 17 | 2019/5/11 | 愚甘杂货铺 |
3 | 干货!论文读写系列|写作风格:例文解析(1)|人文社科|教育学|大学课程、知识 | //www.bilibili.com/video/BV1VC4y1b7ZA?from=search | 11000 | 29 | 2020/7/26 | cici西西熙熙 |
4 | 《用户体验与心理-第1期》大学课程 | //www.bilibili.com/video/BV1r7411M7gY?from=search | 1373 | 9 | 2020/2/24 | Luka老师 |
... | ... | ... | ... | ... | ... | ... |
1902 | 【中国石油大学】构造地质学(第1-2章) ——主讲:李理老师 | //www.bilibili.com/video/BV1Y4411x7sE?from=search | 4097 | 5 | 2019/5/2 | 點點滴滴Super |
1903 | 【模电】模拟电子技术基础【四】 | //www.bilibili.com/video/BV1sb411v7E6?from=search | 5997 | 11 | 2019/3/8 | 干脆的非洲鼓 |
1904 | 【模电】模拟电子技术基础【三】 | //www.bilibili.com/video/BV1Rb411i7yo?from=search | 4713 | 8 | 2019/3/5 | 干脆的非洲鼓 |
1905 | 结构化学-东北大学-王军 | //www.bilibili.com/video/BV1yb411t7Mb?from=search | 5835 | 2 | 2019/2/28 | 万万万万不能怂 |
1906 | 《结构化学》南开大学-孙宏伟 重点难点解析 | //www.bilibili.com/video/BV1yt411t7UG?from=search | 5287 | 6 | 2019/1/28 | 阿bu爱学习 |
1907 rows × 6 columns
from datetime import datetime
# 将表中上传时间(字符串)转换为时间类型
# pd.to_datetime(字符串时间)
df['uptime'] = pd.to_datetime(df.uptime)
df.uptime # dtype: datetime64[ns]
0 2021-01-21
1 2020-07-25
2 2019-05-11
3 2020-07-26
4 2020-02-24
...
1902 2019-05-02
1903 2019-03-08
1904 2019-03-05
1905 2019-02-28
1906 2019-01-28
Name: uptime, Length: 1907, dtype: datetime64[ns]
df.uptime >= datetime(2021,1,1) # 布尔数据系列
0 True
1 False
2 False
3 False
4 False
...
1902 False
1903 False
1904 False
1905 False
1906 False
Name: uptime, Length: 1907, dtype: bool
[df.uptime >= datetime(2021,1,1)] # 布尔下标
temp = df[(df.uptime >= datetime(2021,1,1)) & (df.watchnum > 1000)] #发布时间为2021年播放量大于1000的帖子
temp.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 92 entries, 0 to 1425
Data columns (total 6 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 title 92 non-null object
1 url 92 non-null object
2 watchnum 92 non-null int64
3 dm 92 non-null int64
4 uptime 92 non-null datetime64[ns]
5 upname 92 non-null object
dtypes: datetime64[ns](1), int64(2), object(3)
memory usage: 5.0+ KB
# 通过表达式筛选
# obj.query(筛选条件)
df.query('watchnum >= 1000 and uptime >="2021-1-1"').info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 92 entries, 0 to 1425
Data columns (total 6 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 title 92 non-null object
1 url 92 non-null object
2 watchnum 92 non-null int64
3 dm 92 non-null int64
4 uptime 92 non-null datetime64[ns]
5 upname 92 non-null object
dtypes: datetime64[ns](1), int64(2), object(3)
memory usage: 5.0+ KB
# 根据播放量排序
# obj.sort_values(by=[列1,列2...],ascending = True/False) 默认为True升序
temp.sort_values(by=['watchnum','dm'],ascending=False)
title | url | watchnum | dm | uptime | upname | |
---|---|---|---|---|---|---|
459 | 【公开课】复旦大学:资本论 王德峰(全28讲) | //www.bilibili.com/video/BV1Vp4y1x7F9?from=search | 1099000 | 4299 | 2021-01-19 | 农夫CC |
486 | 【公开课】北京大学:中国经济 林毅夫(全12讲) | //www.bilibili.com/video/BV1hK4y157dt?from=search | 235000 | 561 | 2021-01-14 | 农夫CC |
403 | 【公开课】温铁军:中国经济研究(8讲) | //www.bilibili.com/video/BV1kp4y1W7u8?from=search | 106000 | 523 | 2021-01-27 | 农夫CC |
448 | 【公开课】温铁军:中国经济研究(8讲) | //www.bilibili.com/video/BV1kp4y1W7u8?from=search | 106000 | 523 | 2021-01-27 | 农夫CC |
396 | 【公开课】加州大学洛杉矶分校:亲密关系(全17讲) | //www.bilibili.com/video/BV1xU4y147hJ?from=search | 65000 | 79 | 2021-01-21 | 农夫CC |
... | ... | ... | ... | ... | ... | ... |
811 | 【芝加哥大学】 理解全球经济 全11讲 | //www.bilibili.com/video/BV1nr4y1M7Fd?from=search | 1189 | 0 | 2021-01-24 | 学习党加油站 |
923 | 2021年小黑老师计算机二级最新考点----替换考点汇总 | //www.bilibili.com/video/BV1UU4y1s7Tq?from=search | 1173 | 0 | 2021-02-01 | 爱家伙的小学习 |
1220 | 编程课堂:按键的前世今生学不会,不存在的。 | //www.bilibili.com/video/BV1nK4y1W7bU?from=search | 1157 | 3 | 2021-01-12 | 三月课堂 |
20 | 【生活篇】UCLA本科生带你了解加州大学课程设置与毕业要求 | //www.bilibili.com/video/BV1qt4y1r7Y3?from=search | 1107 | 8 | 2021-01-09 | 未必存在的真理 |
1425 | 【文学批评的方法与实践】华中师范大学 胡亚敏(合6讲) | //www.bilibili.com/video/BV1jr4y1M7Hd?from=search | 1003 | 0 | 2021-01-27 | 语文教学助手 |
92 rows × 6 columns
temp1 = temp.drop(columns='upname')
temp1
title | url | watchnum | dm | uptime | |
---|---|---|---|---|---|
0 | 阿里云大学课程(云计算、中间件、大数据、云安全) | //www.bilibili.com/video/BV1Lv411s7wu?from=search | 2954 | 4 | 2021-01-21 |
20 | 【生活篇】UCLA本科生带你了解加州大学课程设置与毕业要求 | //www.bilibili.com/video/BV1qt4y1r7Y3?from=search | 1107 | 8 | 2021-01-09 |
374 | 【公开课】南开大学:中华诗词 叶嘉莹(20讲) | //www.bilibili.com/video/BV1Vo4y1d7Pe?from=search | 4937 | 4 | 2021-02-10 |
384 | 【公开课】南开大学:中华诗词 叶嘉莹(20讲) | //www.bilibili.com/video/BV1Vo4y1d7Pe?from=search | 4937 | 4 | 2021-02-10 |
387 | 【公开课】启功:中华书法(全4讲) | //www.bilibili.com/video/BV1FV411i7fV?from=search | 9777 | 12 | 2021-02-11 |
... | ... | ... | ... | ... | ... |
1299 | 苏德矿教授谈如何学好微积分—矿爷在丹青有约2021.1.7直播 | //www.bilibili.com/video/BV1dh41117yy?from=search | 1196 | 0 | 2021-01-07 |
1412 | 【中英字幕】曼彻斯特大学Advanced Microeconomics 课程 | //www.bilibili.com/video/BV1bX4y1K799?from=search | 8429 | 2 | 2021-01-19 |
1417 | 《数字无线电系统基础》32讲-电子科技大学-陈祝明【通信专题】 | //www.bilibili.com/video/BV1Ci4y1F7tU?from=search | 3958 | 14 | 2021-01-05 |
1422 | 西安交通大学《电路》赵进全100讲 | //www.bilibili.com/video/BV1Z54y1x7ZK?from=search | 2205 | 3 | 2021-01-11 |
1425 | 【文学批评的方法与实践】华中师范大学 胡亚敏(合6讲) | //www.bilibili.com/video/BV1jr4y1M7Hd?from=search | 1003 | 0 | 2021-01-27 |
92 rows × 5 columns
# 判断是否存在重复值
# temp.duplicated('url')
# 去重
temp.drop_duplicates('url')
title | url | watchnum | dm | uptime | upname | |
---|---|---|---|---|---|---|
0 | 阿里云大学课程(云计算、中间件、大数据、云安全) | //www.bilibili.com/video/BV1Lv411s7wu?from=search | 2954 | 4 | 2021-01-21 | 韭菜滚雪球 |
20 | 【生活篇】UCLA本科生带你了解加州大学课程设置与毕业要求 | //www.bilibili.com/video/BV1qt4y1r7Y3?from=search | 1107 | 8 | 2021-01-09 | 未必存在的真理 |
374 | 【公开课】南开大学:中华诗词 叶嘉莹(20讲) | //www.bilibili.com/video/BV1Vo4y1d7Pe?from=search | 4937 | 4 | 2021-02-10 | 农夫CC |
387 | 【公开课】启功:中华书法(全4讲) | //www.bilibili.com/video/BV1FV411i7fV?from=search | 9777 | 12 | 2021-02-11 | 农夫CC |
392 | 所以你记住物价这个词了嘛! | //www.bilibili.com/video/BV1f54y1Y7JY?from=search | 2140 | 0 | 2021-02-25 | 大阪外語学院 |
... | ... | ... | ... | ... | ... | ... |
1299 | 苏德矿教授谈如何学好微积分—矿爷在丹青有约2021.1.7直播 | //www.bilibili.com/video/BV1dh41117yy?from=search | 1196 | 0 | 2021-01-07 | 稳及阁大学士 |
1412 | 【中英字幕】曼彻斯特大学Advanced Microeconomics 课程 | //www.bilibili.com/video/BV1bX4y1K799?from=search | 8429 | 2 | 2021-01-19 | 杨浦区老实人 |
1417 | 《数字无线电系统基础》32讲-电子科技大学-陈祝明【通信专题】 | //www.bilibili.com/video/BV1Ci4y1F7tU?from=search | 3958 | 14 | 2021-01-05 | 成电电子科协 |
1422 | 西安交通大学《电路》赵进全100讲 | //www.bilibili.com/video/BV1Z54y1x7ZK?from=search | 2205 | 3 | 2021-01-11 | 物语终焉2021 |
1425 | 【文学批评的方法与实践】华中师范大学 胡亚敏(合6讲) | //www.bilibili.com/video/BV1jr4y1M7Hd?from=search | 1003 | 0 | 2021-01-27 | 语文教学助手 |
83 rows × 6 columns
def normalize_url(url):
if not url.startswith('https'):
return 'https:' + url
return url
df['url'] = df['url'].apply(normalize_url)
df
title | url | watchnum | dm | uptime | upname | |
---|---|---|---|---|---|---|
0 | 阿里云大学课程(云计算、中间件、大数据、云安全) | https://www.bilibili.com/video/BV1Lv411s7wu?fr... | 2954 | 4 | 2021-01-21 | 韭菜滚雪球 |
1 | 视觉传达设计专业的小朋友大学课程有哪些,强度怎么样,需要什么技能?学姐给新生的解答与建议 | https://www.bilibili.com/video/BV1Ea4y1a7CX?fr... | 3526 | 8 | 2020-07-25 | 铧仔仔儿的奋斗史 |
2 | CAP:适合高中生的大学课程(上大学之前提前学习大学的课程)同济大学《微积分CAP》 | https://www.bilibili.com/video/BV1X4411Y7u8?fr... | 5597 | 17 | 2019-05-11 | 愚甘杂货铺 |
3 | 干货!论文读写系列|写作风格:例文解析(1)|人文社科|教育学|大学课程、知识 | https://www.bilibili.com/video/BV1VC4y1b7ZA?fr... | 11000 | 29 | 2020-07-26 | cici西西熙熙 |
4 | 《用户体验与心理-第1期》大学课程 | https://www.bilibili.com/video/BV1r7411M7gY?fr... | 1373 | 9 | 2020-02-24 | Luka老师 |
... | ... | ... | ... | ... | ... | ... |
1902 | 【中国石油大学】构造地质学(第1-2章) ——主讲:李理老师 | https://www.bilibili.com/video/BV1Y4411x7sE?fr... | 4097 | 5 | 2019-05-02 | 點點滴滴Super |
1903 | 【模电】模拟电子技术基础【四】 | https://www.bilibili.com/video/BV1sb411v7E6?fr... | 5997 | 11 | 2019-03-08 | 干脆的非洲鼓 |
1904 | 【模电】模拟电子技术基础【三】 | https://www.bilibili.com/video/BV1Rb411i7yo?fr... | 4713 | 8 | 2019-03-05 | 干脆的非洲鼓 |
1905 | 结构化学-东北大学-王军 | https://www.bilibili.com/video/BV1yb411t7Mb?fr... | 5835 | 2 | 2019-02-28 | 万万万万不能怂 |
1906 | 《结构化学》南开大学-孙宏伟 重点难点解析 | https://www.bilibili.com/video/BV1yt411t7UG?fr... | 5287 | 6 | 2019-01-28 | 阿bu爱学习 |
1907 rows × 6 columns