手把手教你使用Python做数据分析
一、数据分析是什么
数据分析是指用适当的统计分析方法对收集来的大量数据进行分析,将它们加以汇总和理解并消化,以求最大化地开发数据的功能,发挥数据的作用,使得数据的价值最大化
二、数据分析是做什么的
数据分析是为了提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。 数据分析的数学基础在20世纪早期就已确立,但直到计算机的出现才使得实际操作成为可能,并使得数据分析得以推广。
- 分析用户的消费行为
- 制定促销活动的方案
- 制定促销时间和粒度
- 计算用户的活跃度
- 分析产品的回购力度
- 分析广告点击率
- 决定投放时间
- 制定广告定向人群方案
- 决定相关平台的投放
- …
数据分析使用适当的方法对收集来的大量数据进行分析,帮助人们做出判断,以便采取适当的行动
- 保险公司从大量赔付申请数据中判断哪些为骗保的可能
- 支付宝通过从大量的用户消费记录和行为自动调整花呗的额度
- 短视频平台通过用户的点击和观看行为数据针对性的给用户推送喜欢的视频
三、为什么学习数据分析
- 岗位的需求
- 是 Python 数据科学的基础
- 是机器学习的基础
四、数据分析实现流程
- 提出问题
- 准备数据
- 分析数据
- 获得结论
- 成果可视化
五、数据分析环境的搭建
1. Anaconda
官网:https://www.anaconda.com 下载安装对应安装包即可
注意: 安装目录不可以有中文和特殊符号
Anaconda集成好了数据分析和机器学习中所需要的全部环境
2. Jupyter
- Jupyter就是Anaconda提供的一个基于Web的可视化开发工具
3. Jupyter的基本使用
启动: 在终端中输入:
jupyter notebook
,按下回车即可新建文件: New -->> python3
Cell(代码块)有两种模式
- code: 编写代码
- markdown: 编写笔记
快捷键
添加cell:
a
或b
删除:
x
修改cell的模式
- 修改成markdown模式:
m
- 修改成code模式:
y
- 修改成markdown模式:
执行cell内代码:
shift+enter
自动补全:
tab
打开帮助文档:
shift+tab
六、如何用Python进行数据分析
在Python中我们数据分析离不开以下三剑客
- Numpy
- Pandas
- Matplotlib
Numpy模块
- Numpy(Numerical Python) 是 Python 语言中做科学计算的基础库。重在于数值计算,也是大部分 Python 科学计算库的基础,多用于在大型、多维数组上执行的数值运算。
1. Numpy的创建
- 使用
array()
创建一个一维数组
- 使用
array()
创建一个多维数组
- 使用
zero()
创建一个多维数组
- 使用
ones()
创建一个多维数组
- 使用
linspace()
创建一维的等差数列数组
- 使用
arange()
创建一维的等差数列数组
- 使用
random.randint()
创建随机的多维数组
2. Numpy的常用属性
- shape
- ndim
- size
- dtype
3. Numpy的索引和切片
- 索引操作和列表同理
- 切片操作
4. Numpy的矩阵操作
- 矩阵变形
级联操作
- 将多个 Numpy 数组进行横向或者纵向的拼接
- axis轴向参数
- 0:列
- 1:行
常用的聚合操作
- sum, max, min, mean
常用的统计函数
- 标准差:一组数据平均值分散程度的一种度量
- 方差:统计中的方差是每个样本值与全体样本值的平均数之差的平方值的平均数,即
mean((x-x.mean())**2
。换句话说,标准差就是方差的平方根。
Pandas模块
1. 为什么学习Pandas
Numpy能够帮助我们处理的是数值型的数据,而Pandas可以帮我们处理除数值型以外的其他类型数据,
2. Pandas的数据结构
- Series
- 是一种类似于一维数组的对象,由下面两个部分组成:
- values:一组数据(ndarray类型)
- index:相关的数据索引标签
- 是一种类似于一维数组的对象,由下面两个部分组成:
- DataFrame
- 是一个表格型的数据结构。其既有行索引,也有列索引。
- 行索引:index
- 列索引:columns
- 值:values
- 是一个表格型的数据结构。其既有行索引,也有列索引。
3. Series操作
3.1 Series的创建
index用来指定显式索引,可以增强Series的可读性。
也可以使用字典作为数据源。
3.2 Series的索引和切片
3.3 Series的常用属性
- shape
- size
- index
- values
- dtypes
3.4 Series的常用方法
head()
,tail()
unique()
isnull()
,notnull()
3.5 Series的算数运算
索引一致的元素进行算数运算否则补空
4. DataFrame操作
4.1 DataFrame的创建
可使用 ndarray 创建。
也可以使用字典作为数据源。
index
用来指定显式索引,可以增强 DataFrame 的可读性。
4.2 DataFrame索引和切片
iloc: 通过隐式索引取行
loc: 通过显式索引取行
对行进行切片
对列进行切片
4.3 DataFrame常用属性
- shape
- values
- columns
- index
4.4 DataFrame的常用方法
同Series
4.5 DataFrame的算数运算
同Series
4.6 DataFrame的级联和合并
级联操作
- pd.concat
- pd.append
接下来我们伪造两组DataFrame数据。
使用pd.concat()
- 匹配级联
- 横向级联
- 不匹配级联
- 不匹配指的是级联的维度和索引不一致。例如纵向级联时列索引不一致,横向级联时行索引不一致。
- 有两种连接方式
- 外连接:补NaN(默认模式)
- 内连接:只连接匹配的项
PS:如果想要保留数据的完整性必须使用参数 join='outer'
(外连接)
使用 pd.append()
- 只能纵向级联,并且只能外级联,不可以内级联(一般不用)。
合并操作
pd.merge()
merge
与concat
的区别在于,merge
需要依据某一共同列来进行合并。- 使用
pd.merge()
合并时,会自动根据两者相同 column 名称的那一列作为 key 来进行合并。 - 注意:每一列元素的顺序不要求一致
一对一合并
首先我们来伪造两组 DataFrame。
使用 pd.merge()
一对多合并
首先我们来伪造两组 DataFrame。
使用 pd.merge()
多对多合并
首先我们来伪造两组 DataFrame。
使用 pd.merge()
merge()方法还可以使用left_on参数和right_on参数哦,how这个参数也可以指定不同的连接方式。
5. 基于Pandas的数据清洗
5.1 为什么需要做数据清洗
- 原始数据中可能存在缺失值(空值)
- 这些值是没有意义的,并且会干扰我们分析结果的产生
- 重复值
- 重复值是没有必要多次分析和处理的
- 异常值
- 由于数据采集手段不同等,数据中可能会产生异常值,异常值同样会干扰我们分析结果的产生
5.2 处理缺失值
- 有两种缺失值:
- None
- np.nan(NaN)
- 两种缺失值的区别
- None:None对象类型
- np.nan:浮点型
为什么在数据分析中需要用到浮点类型的空而不是对象类型的?
None+1
会报TypeError
,而np.nan+1
结果是nan
。它不会干扰或者中断运算。- NaN可以参与运算
- None不可以参与运算
在Pandas中如果数据中遇到了None形式的空值则Pandas会将其强转成NaN的类型。
缺失值处理操作
我们来伪造一组带有缺失值的数据。
方法1:对缺失值进行过滤(删除空所在的行数据)
isnull()
搭配any()
notnull()
搭配all()
- 使用
dropna()
可以直接将缺失的行或者列数据进行删除
- 方法2:
fillna()
对缺失值进行填充
5.3 处理重复数据
我们来伪造一组带有重复值的数据。
- 使用
drop_duplicates()
5.4 处理异常值
异常值是什么?
- 异常值指的是可能会对具有实质性意义的估计产生偏见或影响,并且会增加误差方差的值。
接下来我们伪造一组带有异常值的数据。
然后我们来实现异常值的清洗。
6. Pandas高级操作
6.1 替换操作
- 替换操作可以同步作用于Series和DataFrame中
- 单值替换
- 普通替换:替换所有符合要求的元素
to_replace=15, value='value'
- 按列指定单值替换
to_replace={列标签: 替换值}, value='value'
- 普通替换:替换所有符合要求的元素
- 多值替换
- 列表替换
to_replace=[], value=[]
- 字典替换(推荐)
to_replace={to_replace: value, to_replace: value}
- 列表替换
首先我们来伪造一组DataFrame。
使用 replace()
6.2 映射操作
- 概念:创建一个映射关系列表,把values元素和一个特定的标签或者字符串绑定(给一个元素值提供不同的表现形式)
- map是Series的方法,只能被Series调用
首先我们来伪造一组DataFrame。
使用 map()
例:超过3000部分的薪资缴纳50%的税,计算每个人的税后薪资
6.3 分组聚合操作
- 数据分类处理的核心:
groupby()
函数groups
属性查看分组情况
分组
接下里我们伪造一组DataFrame。
使用 groupby()
和 groups
聚合
高级数据聚合
- 使用
groupby()
分组后,也可以使用transform()
和apply()
提供自定义函数实现更多的运算 df.groupby('item')['price'].sum()
<==>df.groupby('item')['price'].apply(sum)
transform()
和apply()
都会进行运算,在transform()
或者apply()
中传入函数即可transform()
和apply()
也可以传入一个lambda
表达式
6.4 数据加载
- 读取csv文件数据
- 读取数据库中的数据
matplotlib模块
- matplotlib模块可以帮助我们轻松的将数据制成图表可视化展示。
首先我们倒入全局的模块
1. 绘制线形图
1.1 绘制单条和多条线形图
1.2 设置坐标系的比例
1.3 设置图例
1.4 设置轴的标识
1.5 图例保存
1.6 曲线的样式和风格
还有其他多种参数的样式哦,详情请见库的源代码。
2. 绘制柱状图
其余用法和线形图类似。
3. 绘制直方图
- 是一个特殊的柱状图,又叫做密度图。
plt.hist()的参数
bins
:可以是一个bin数量的整数值,也可以是表示bin的一个序列。默认值为10normed
:如果值为True,直方图的值将进行归一化处理,形成概率密度,默认值为Falsecolor
:指定直方图的颜色。可以是单一颜色值或颜色的序列。如果指定了多个数据集合,例如DataFrame对象,颜色序列将会设置为相同顺序。如果未指定,将会使用一个默认的线条颜色orientation
:通过设置orientation
为horizontal
创建水平直方图。默认值为vertical
其余用法和线形图类似。
4. 绘制饼图
pie()
,饼图也只有一个参数 x- 饼图适合展示各部分占总体的比例,条形图适合比较各部分的大小
其余用法和线形图类似。
5. 散点图
scatter()
, 因变量随自变量而变化的大致趋势
其余用法和线形图类似。
PS:欢迎提出宝贵意见,如想询问技术问题可以留言区留言或加开发人员的微信(微信号:x118422)进行咨询~
手把手教你使用Python做数据分析相关推荐
- python代码示例图形-纯干货:手把手教你用Python做数据可视化(附代码)
原标题:纯干货:手把手教你用Python做数据可视化(附代码) 导读:制作提供信息的可视化(有时称为绘图)是数据分析中的最重要任务之一.可视化可能是探索过程的一部分,例如,帮助识别异常值或所需的数据转 ...
- python画图代码大全-纯干货:手把手教你用Python做数据可视化(附代码)
原标题:纯干货:手把手教你用Python做数据可视化(附代码) 导读:制作提供信息的可视化(有时称为绘图)是数据分析中的最重要任务之一.可视化可能是探索过程的一部分,例如,帮助识别异常值或所需的数据转 ...
- garch预测 python_【2019年度合辑】手把手教你用Python做股票量化分析
引言 不知不觉,2019年已接近尾声,Python金融量化公众号也有一年零两个月.公众号自设立以来,专注于分享Python在金融量化领域的应用,发布了四十余篇原创文章,超过两万人关注.这一路走来,有过 ...
- 手把手带你用Python做数据分析和可视化项目实战,能写进简历的那种!(另送15个实战案例)...
最近几年,数据分析可真是太火了. 阿里.字节等互联网巨头基于大数据打造的商业模式获得巨大成功,使得"数据思维"."数据能力"迅速成为衡量职场人能力的核心指标,专 ...
- 【量化】手把手教你用 Python 做股票入门分析(一)
作者:悠悠做神仙 来源: 恒生LIGHT云社区 前面量化入门系列,给大家分享了一些编程语言以及数据源--> 量化交易入门系列1:编程语言与数据源 ,很多读者私信我,希望可以手把手的教一下如何进行 ...
- 手把手教你用Python做个可视化的“剪刀石头布”小游戏
点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 众里寻他千百度.蓦然回首,那人却在 ...
- 黑客很酷?手把手教你用Python做一个
前言 随着信息化时代的到来,人们对互联网接触越来越广泛,这样就使得很多人对于黑客充满向往,企图通过网络虚拟世界来做一些有趣的事情. 所以今天我们要说的工具就是:怎样利用Python做一个黑客软件. 众 ...
- 【赠书】pandas创始人手把手教你利用Python进行数据分析
周末就要到了,本次给大家赠送5本Python技术书籍,这次赠送的书籍是<利用Python进行数据分析>. 这是一本什么样的书 Python是目前数据科学领域的王者语言,众多科学家.工程师. ...
- pandas创始人手把手教你利用Python进行数据分析!
财经类.统计类背景人员,他们的日常工作有大量数据需要处理.分析,但对于学习使用计算机领域的编程语言Python又感到无从下手. 一些想要学习Python的计算机人员,他们工作较忙,没有太多时间通过互联 ...
- 清华大佬手把手教你使用Python进行数据分析和可视化
Python是进行数据分析的一种很不错的语言,主要是因为以数据为中心的 python 库非常适合. Pandas是其中的一种,使导入和分析数据更加容易. 在本文中,我使用了来分析斯坦福网站的公共数据集 ...
最新文章
- Introduction to random forests
- JAVA线程池的分析和使用
- 部署node.js的开发环境
- MySQL性能突发事件问题排查技巧
- # 保持最外层获取焦点_大事件!沈阳爱尔白内障焕晶诊疗中心正式启用,两位PanOptix三焦点人工晶体植入患者清晰见证!...
- 第三十一期:大数据分析师学习入门,10个数据可视化技巧
- 玩转oracle 11g(26):误删表数据和误删表回滚
- 部署WEB项目到服务器(三)安装mysql到linux服务器(Ubuntu)详解
- c# 数组中的空值_2.1.1 聊聊 C# 的版本及特性
- html可视化布局工具_简介一些蜘蛛布局标签的饼图的绘制方法
- 卸载java_Java面试必备——类的加载过程
- BP神经网络matlab程序运行问题
- 使用nssm注册 windows服务
- java单循环赛制程序_单循环比赛的固定轮转编排法与贝格尔编排法
- 基于 redis 的单点登录原理
- pthread_sigmask
- 计算机游戏教学法PPT,幼儿园语言游戏教学法PPT课件
- 科罗拉多州立大学计算机科学,科罗拉多州立大学
- 北京铁路安检全面升级 四大站特警持枪巡逻
- PHPUnit 入门
热门文章
- PLSQL导入SQL文件
- OpenGL超级宝典(第7版)之第九章片段处理与帧缓冲
- 论为什么需要软件工程
- 电机学(1) - 绪论
- 数学分析 反函数存在性定理,连续性定理与求导定理
- 《Doom启示录》(1-13)
- CCNA学习指南 IP路由
- 【图像去噪】基于matlab GUI均值+中值+高通低通+巴特沃斯+PCA+小波+维纳滤波图像去噪【含Matlab源码 1705期】
- Android 实现基于RTMP视频播放
- python语言程序设计实践教程答案实验二_20192428 实验二《Python程序设计》实验报告...