Build a dream and the dream will build you.
Hi,同学们,上一阶段我们学习了Python的基础知识,简单了解了Python数据分析的关键库——Pandas,并且通过项目二的实战,相信大家也一定信心满满的准备学习更多的Pandas知识了吧!那么从今天开始未来的四周内,我们将会对Pandas进行更细致的学习,大家加油吧!
本周开始,我们就进入到了项目三(P3)阶段,本阶段总共包含四周,在这一个月内,我们要对数据分析入门进行学习,学习数据分析思维,掌握Python数据分析及可视化方法,并使用所学知识完成项目三:探索数据集,尝试着自己完成整个数据分析的流程,得到一些饶有兴趣的结论,你一定会非常有成就感哒!那么以下便是这四周的学习安排:
时间 | 学习重点 | 对应课程 |
---|---|---|
第1周 | 数据分析过程-1 | 数据分析过程&案例研究-1 |
第2周 | 数据分析过程-2 | 案例研究-1&案例研究-2 |
第3周 | 完成项目 | 项目:探索数据集 |
第4周 | 项目修改与通过 | 修改项目、查缺补漏、休息调整 |
!!看这里!!:在P3课程里面安排了SQL的高阶课程,但是因为在项目三中并不会涉及到SQL知识,所以为了保证大家学习的连贯性,在完成前两周的课程之后,就开始项目。至于!!SQL的高阶知识,大家可以放在课程通关后进行选修!!;
本阶段可能是个挑战,请一定要保持自信,请一定要坚持学习和总结,如果遇到任何课程问题请参照如下顺序进行解决:
- 先自行查找问题答案(注意提取关键词),参考:谷歌/百度搜索、菜鸟教程、CSDN、stackoverflow、Python for Data Analysis, 2nd Edition 、Python Cookbook
- 若问题未解决,请将问题及其所在课程章节发送至微信群,并@助教即可
饭要一口一口吃,路要一步一步走,大家不要被任务吓到,跟着导学一步一步来,肯定没问题哒!那我们开始吧!
注:本着按需知情原则,所涉及的知识点都是在数据分析过程中必须的、常用的,而不是最全面的,想要更丰富,那就需要你们课下再进一步的学习和探索!
本周目标
- 学习课程中数据分析过程中的全部和案例研究1的部分内容,了解数据分析过程,熟练掌握Pandas在数据分析中的应用。
学习计划
时间 | 学习资源 | 学习内容 |
---|---|---|
周二 | 微信群 - 每周导学 | 预览每周导学 |
周三、周四 | Udacity - Classroom | 数据分析过程&案例研究-1 |
周五 | 微信/Classin - 1V1 | 课程难点 |
周六 | Classin - 优达日 | 本周学习总结、答疑 |
周日 | 笔记本 | 总结沉淀 |
周一 | 自主学习 | 查漏补缺 |
本周知识清单
前期准备&拓展
- 在课程概述给出的链接很重要,希望大家能抽空都看一看,尤其是最后的书Python for Data Analysis,目前已经出了第二版,可以戳下载链接进行下载。
- 关于设置编程环境,本章已经不是建议了,而是要求,如果你还没有完成本地环境的配置,请戳:配置Anaconda和Jupyter Notebook
数据分析流程
数据分析不是从上至下一蹴而就的过程,而是需要你不断迭代、重复、完善,最终得到结论的过程。
提出问题
数据集中的各个变量之间的相关性如何?是否存在某些联系?
变量的统计结果会揭示什么?
根据现有掌握的数据,能否对未来走势进行预测?
根据你想了解的问题,去收集数据,再对问题进行修缮,如此迭代,获取更全面的数据,提出更一阵见血的问题。
…
整理数据
收集
数据库提取?直接下载?网络爬虫?
评估
这个过程是对数据产生直观印象的过程,你要尝试了解数据集的大小,基本的统计结果,是否存在数据重复?缺失?数据类型是否正确?是否每个变量成一列&每个观察值成一行?数据是否有统计错误?(严重偏离正常值,比如说气温达到70℃等等)…
清理
对评估出的问题进行逐项排查、清理,直至获取到干净的数据(推荐超级有用且经典的Tidy Data,虽然代码用的是R语言,但代码不就只是工具而已嘛,关键的是思维方法)
探索性数据分析
即课程中提到的EDA(Exploratory data analysis ),这是一种分析数据集——尤其是陌生数据集——的方法,具体实施的话可以采用定量、定性的数据分析或者是可视化分析。
这是一个强调迭代的过程,在这个阶段你要不断的对数据进行探索(提问、整理、分析、可视化等等),根据你得到的结果再去丰富你的数据或者完善你的问题,最终得出结论。
这是一个考验耐心和细心的繁琐过程,所以一定要心平气和,保持工作的连贯性。(不做完一套不能睡觉?)
得出结论
- 通过可视化直接得出结论(描述、总结)
- 统计学(预测,P4阶段会学习)
- 机器学习算法(主要是用来做预测,课下可以学一学)
传达结果
撰写报告,和别人分享你的研究结果,所以一定要逻辑清晰、结论都要有根有据,让被分享者信服你的结论。
Pandas在数据分析中的应用
准备
导入Pandas包
1
import pandas as pd
打开文件
1
2
3
4
5
6#打开csv文件
pd.read_csv('filename')
#打开excel文件
pd.read_excel('filename')
#处理中文字符的tsv文件
pd.read_csv('filename',sep = '\t',encoding = 'utf-8')
整理数据
查看数据集数据
1
2
3
4
5
6#查看前五行
df.head()
#查看尾五行
df.tail()
#查看随机一行
df.sample()查看数据集信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24#查看数据集行数和列数
df.shape
#查看数据集信息(列名、数据类型、每列的数据量——可以看出数据缺失情况)
df.info()
#查看数据集基本统计信息
df.describe()
#查看数据集列名
df.columns
#查看数据集数据缺失情况
df.isnull().sum()
#查看缺失列数据
df[df['col_name'].isnull()]
#查看数据集数据重复情况
sum(df.duplicated())
#查看重复数据
df[df.duplicated()]
#查看某列分类统计情况
df['col_name'].value_counts()
#查看某列唯一值
df['col_name'].unique()
#查看某列唯一值数量
df['col_name'].nunique()
#以某列对数据集进行排序
df.sort_values(by = 'col_name',ascending = False)#False为由大至小数据筛选
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18#提取某行
df.iloc[row_index]
df.loc['row_name']
#提取某几行
df.iloc[row_index_1:row_index_2]
#提取某列
df['col_name']
#提取某几列
df[['col_name_1','col_name_2']]
#提取某行某列的值
df.iloc[row_index,col_index]
df.loc['row_name','col_name']
#筛选某列中满足某条件的数据
df[df['col_name'] == value]#等于某值的数据,同理满足所有比较运算符
df.query('col_name == value')#代码效果同上
df[(df['col_name_1'] >= value_1) & (df['col_name_2'] != value_2)]#与&,或|
df.query('(col_name_1 >= value_lower) & (col_name_2 <= value_upper)')
df.groupby('col_name')#按col_name列进行分组清理数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17#删除某行
df.drop(['row_name'],inplace = True)#若添加inplace = True,修改后的数据会覆盖原始数据
#删除某列
df.drop(['col_name'],axis = 1)
#缺失值的处理
df.fillna(mean_value)#替换缺失值
df.dropna()#删除包含缺失值的行
df.dropna(axis = 1, how = 'all')#只删除所有数据缺失的列
#删除重复值
drop_duplicates(inplace = True)
#更改某行/列/位置数据
用iloc或者loc直接替换修改即可
#更改数据类型
df['datetime_col'] = pd.to_datetime(df['datetime_col'])
df['col_name'].astype(str)#还可以是int/float...
#更改列名
df.rename(columns={'A':'a', 'C':'c'}, inplace = True)如何处理缺失值呢?这就要根据确实数据的情况而定了,是直接删除?还是暴力平均值替换?还是分类之后再用平均值替换?还是用一些什么其他的方法,全靠你去把握了。可以看一看Python Data Science这本书中的Handling Missing Data章节,你肯定会有所收获的。
合并数据(merge、concat、join、append)
因为这里比较繁琐,而且讲起来会用到很多图表,所以进行单独讲解,链接→每周导学-第六周导学-Pandas数据融合
可视化
我会将Pandas的可视化部分与matplotlib.pyplot的可视化和seaborn/ggplot等可视化包放在下周的导学中。
导出数据
1 | #导出csv文件 |
项目相关
P3的项目需要你完完整整得过一遍数据分析的过程,所以呢,单独的某一个数据集肯定满足不了大家,贴心的Udacity给大家准备了几个数据集备选,戳数据集预览,挑一个自己感兴趣的先~