最近在学习极客时间APP中的《数据分析实战45讲》,每天学一点,积累起来是一座高高的壁垒。以下是每天学习的笔记。
《数据分析实战45讲》每日打卡
开篇词,你为什么需要数据分析能力?
数据是未来的石油,谁掌握了数据分析能力,谁就拥有了财富。
如何学习数据分析呢?作者以前招过一个实习生,一年内从3k月薪到1.3w,总结起这个实习生的学习方法概括为: MAS 方法。Multi-Dimension:想要掌握一个事物,就要从多个角度去认识它。Ask:不懂就问,程序员大多都很羞涩,突破这一点,不懂就问最重要。Sharing:最好的学习就是分享。用自己的语言讲出来,是对知识的进一步梳理。
这个专栏的目的就是做到第一点,帮助学员从多个角度与数据分析建立链接。把学习重心放在工具和实践上,即学即用,不断积累成就感,思维也就慢慢养成了。
《数据分析实战45讲》每日打卡
第一讲,数据分析全景图及修炼指南
一、数据分析全景图
我们在谈论数据分析的时候在谈论什么呢?主要分三个部分数据采集、数据挖掘、数据可视化。
1.数据采集
可以使用“八爪鱼”等工具采集,也可以写Python爬虫。
2.数据挖掘
数据挖掘涉及数据和算法基础,结合案例学习更合适。
3.数据可视化
数据往往是隐性的,数据量大了人很难感知,用数据可视化可以更好分析结果。可以使用Python,也可以用第三方工具。
二、修炼指南
1.不要重复造轮子
2.熟练使用工具
《数据分析实战45讲》每日打卡
第二讲,学习数据挖掘的最佳路径是什么?
1.数据挖掘的基本流程
商业理解->数据理解->数据准备->模型建立->模型评估->上线发布
2.数据挖掘十大算法
分类算法:C4.5,朴素贝叶斯(Naive Bayes),SVM,KNN,Adaboost,CART
聚类算法:K-Means,EM
关联分析:Aprioril
连接分析:PageRank
其他算法都是在这10个算法基础上演变而来。
3.数学原理
概率论与数理统计、线性代数、图论、最优化方法。其中除了图论,其他内容在读书时都有接触。
《数据分析实战45讲》每日打卡
第三讲,Python基础语法
以前学过Python,了解基础语法,简单易用而且第三方库很强大。除了 Python 自身的特点,Python 还有强大的开发者工具。在数据科学领域,Python 有许多非常著名的工具库:比如科学计算工具 NumPy 和 Pandas 库,深度学习工具 Keras 和 TensorFlow,以及机器学习工具 Scikit-learn,使用率都非常高。
-
IDE
Pycharm以前用过,启动比较慢,但对python的原生支持很好。
Sublime Text,下载试用了一下,可以安装各种插件,常用的package control(安装插件的插件)、SublimeCodeIntel(代码提示插件)。参考1(sublime+python配置),参考2(package control启动问题).sublimecodeintel还有问题,参考3。sublime text虽然很快,很多插件,比较灵活,但是配置稍微复杂。还是用pycharm集成环境。 -
Online Judge
浙大ACM的online judge平台,在线编码答题。对提高python语言和算法熟练度很有帮助。其他在线编码平台,leetcode,pythontip。
使用体验:浙大的oj平台全英文,不是很友好。
leetcode力扣上解答题目界面比较友好,而且可以看排名,算法时效性也能测出来,支持各种语言,主要是对熟练算法,比较不错。
pythontip主要是考察python语法,对熟悉使用python很有帮助。
每天可以练习一题leetcode和pythontip,提高对算法和语法的熟练程度。 -
问题回答
(1)如何引入scikit-learn库
安装skikit-learn库后,import sklearn
(2)sum(list(range(1,100,2)))
一句话写完
《数据分析实战45讲》每日打卡
第四讲,Numpy介绍
Numpy是Python中使用最多的第三方库,是科学计算、数据分析的基础,提供比Python更高效的数据结构。
1.Numpy特点-高效
Numpy的数据结构在底层使用连续内存块,比Python自带的list分散存储读取效率更高。不需要为每个数组元素维护一个指针,节省空间。Numpy矩阵计算采用多线程方式,利用多核CPU,提高计算效率。
2.Numpy中的数据结构
ndarray对象存储多维数组,类似于matlab中的数组。Numpy中还可以通过dtype定义结构类型,类似于C语言中的结构体。
3.Numpy中的处理函数
ufun对数组中每个元素进行操作,用C语言编写的,效率非常高。ufun函数包括:创建数组(arange、linespace),算数运算(加、减、乘、除、乘方、求模),统计函数(最值、平均数、方差、百分位数、中位数等),排序(sort函数)
4.问题回答
import numpy as np
studenttype = np.dtype({
'names':['name', 'Chinese', 'English', 'Math'],
'formats':['S32', 'i', 'i', 'i']
})
students = np.array([('zhangfei',66, 65, 30),('guanyu', 95, 89, 98),('zhaoyun', 93, 92, 96),('huangzhong', 90, 89, 77),('dianwei', 80, 90, 90)],dtype=studenttype)
print(np.mean(studengts[:]['Chinese']))
print(np.min(students[:]['Chinese']))
print(np.max(students[:]['Chinese']))
print(np.var(students[:]['Chinese']))
print(np.std(students[:]['Chinese']))
《数据分析实战45讲》每日打卡
第五讲,pandas介绍
在数据分析中,Pandas使用频率很高,因为Pandas的数据结构DataFrame与json契合度高,而且简单的数据清晰几句代码搞定。
-
Pandas数据结构
Series 是个定长的字典序列。说是定长是因为在存储的时候,相当于两个 ndarray,这也是和字典结构最大的不同。因为在字典的结构里,元素的个数是不固定的。
DataFrame 看成是由相同索引的 Series 组成的字典类型,类似数据库中的表。 -
数据导入导出
Pandas 允许直接从 xlsx,csv 等文件中导入数据,也可以输出到 xlsx, csv 等文件,非常方便。 -
数据清洗
drop() 函数 删除 DataFrame 中的不必要的列或行;rename() 函数重命名列名 ; drop_duplicates() 去重复的行;astype ()函数来规范数据格式;strip() 函数删除数据间空格;isnull()查找空值;fillna()填补空值;apply()函数中可以自定义清洗规则。 -
数据统计
count()计数;min()最小值;max()最大值;sum()求和;mean()平均值等等。 -
数据表合并
有时需要将多个渠道源的多个数据表进行合并,使用merge()函数,有5中方式。
基于指定列进行连接pd.merge(df1, df2, on='name')
,取name字段相同的部分合并;
内连接pd.merge(df1, df2, how='inner')
,取两个表主键的交集的部分合并;
左连接pd.merge(df1, df2, how='left')
,以第一个表为主,第二个表为辅助合并;
右连接pd.merge(df1, df2, how='right')
,以第二个表为主,第一个表为辅助合并;
外连接pd.merge(df1, df2, how='outer')
两个表的并集。 -
使用SQL,pandasql工具
使用pandasql工具可以直接使用 SQL 语句来操作 Pandas,pandasql 中的主要函数是 sqldf,它接收两个参数:一个 SQL 查询语句,还有一组环境变量 globals() 或 locals()。 -
问题回答
import pandas as pd from pandas import Series, DataFrame data = {'Chinese': [66, 95, 93, 90,80,80],'English': [65, 85, 92, 88, 90,90],'Math': [None, 98, 96, 77, 90,90]} df = DataFrame(data, index=['ZhangFei', 'GuanYu', 'ZhaoYun', 'HuangZhong', 'DianWei', 'DianWei'], columns=['Chinese', 'English', 'Math']) print(df) df = df.drop_duplicates() print(df) def sum_subject(df): df = df.fillna(0) df['Sum'] = df['Chinese']+df['English']+df['Math'] return df df = df.apply(sum_subject,axis=1) print(df)
网友评论