数据分析——Python内容学习【1】

该系列文章系个人读书笔记及总结性内容,任何组织和个人不得转载进行商业活动!

简介

2022最新版Python数据分析小白教程

编程环境基础库:

  • Python3
  • Numpy
  • pandas
  • matplotlib
  • SciPy.org:许多计算方法
  • sklearn:许多建模模型
  • seaborn
  • Keras:神经网络

数据分析概述

  • 利用统计分析方法 提取有用信息 总结与概括;
  • 用户行为分析、用户画像、商品画像、商品推荐、市场分析
  • “数据是未来的核心,未来数据量是区分企业规模大小的标准”;

数据分析流程:

  • 狭义数据分析

    • 数据获取
    • 探索分析与可视化:更直观的认识数据
  • 数据建模与挖掘
    • 预处理理论
    • 分析建模:一个能进行预测的规则系统
    • 模型评估

重视理论 + 勤于查阅 + 联系实际 + 解决问题

数据获取

数据获取的常用手段

  • 数据仓库(DW):记录业务流程中的细节,汇总处理所有的业务数据;

    • 全部事实的记录;
    • 部分维度的可用数据 抽取后形成数据集市;
  • 检测与抓取
    • 传感器检测
    • 网络爬虫
      • 抓取数据:urllib、 urllib2、 requests、 scrapy
      • 解析数据:PhantomJS(渲染后 再解析)、 beautifulSoup、 Xpath
  • 填写、日志、埋点
    • 埋点:访问访客停留时间、页面查看、跳出率;
    • 一般分两种,一种是页面统计,一种是统计操作行为,最终记录与互联网的交互过程,第三方的如友盟统计;
    • 日志:一般是文件形式,但为了数据分析最终也要汇总到数据仓库中;
    • 也分两种,前端日志和后端日志,前端日志需要终端上传到服务器;
  • 计算获得
    • 通过数据间接计算得来的,具有实际意义的数据;

数据库VS数据仓库:

  • 数据库面向业务存储
  • 数据仓库面向主题存储(主题:较高层次上对分析对象数据的一个完整并且一致的描述)
  • 数据库面向的是应用(OLTP 联机事务处理)
  • 数据仓库面向的是分析(OLAP 联机分析处理)

一些可用的数据学习网站:

  • 数据竞赛网站:国外Kaggle、国内天池
  • 数据集网站:ImageNetOpen Images
  • 各领域统计数据:统计局、公司财报;

探索性数据分析与可视化

数据和理论基础

基于Anoconda5.1.1 获取相应的Python环境和工具包;

  • 测试数据集:HR.csv;

    • 员工满意度(小数0~1)、最近一次评价分数(小数0~1)、参与项目数、平均每月工作时长、工作年限、是否有工作事故(0 1)、最近是否离职(0 1)、近五年是否有晋升(0 1)、所在部分(str)、工资登记(str 高中低);
  • 使用Pandas进行数据预览和处理;
import pandas as pddf = pd.read_csv('HQ.csv', sep="\t") # 支持分隔符的可选参数
df.head(10)

理论铺垫:

  • 集中趋势:

    • 是对数据聚拢的一种衡量

      • 均值:数据相对均衡时
      • 中位数:数据存在极大 或 极小时
      • 分位数:数据从小到大排序,切分成等份的数据点
      • 众数:离散值的集中趋势衡量
    • 直方图+分位数的方式 会让数据的展示更加直观
  • 离中趋势:
    • 标准差:每个数减均值的平方和 再除以数据量
    • 方差:标准差 再开根号
    • 值越大表示数据越离散,值越小表示数据越聚拢;
  • 数据分布:
    • 偏态与峰态:

      • 偏态系数:是对数据平均值偏离状态的一种衡量,简单看均值大于中位数,即正偏,否则为负偏;
      • 峰态系数:对数据分布集中强度的衡量,值越大越集中,分布越陡峭;值越小,分布越平缓;
      • 正态分布的峰态系数是3,如果一个数据分布的峰态系数与3差距大于2,基本就可以确定它不是正太分布了;
    • 正态分布与三大分布
      • 标准正态分布:均值0 方差1
      • 卡方分布:几个标准正态分布的平方和 满足的分布
      • t分布:正态分布的随机变量,除以一个服从卡方分布的变量,经常用来根据小样本来估计呈正态分布且方差未知的总体的均值;
      • f分布:是由构成两个服从卡方分布的随机变量的比构成的;
  • 抽样理论:
    • 全量检验数据量大,或不太现实时,就需要使用抽样检验;

      • 重复抽样(抽完放回)、非重复抽样 (抽完不放回)
      • 完全随机抽样、等差距抽样、分类分层抽样(按类别比例)
    • 抽样误差
    • 抽样精度

四分位数的计算:

  • 分成四份,即有三个数据点
  • Q1=(n+1)*0.25
  • Q2=(n+1)*0.5
  • Q3=(n+1)*0.75

直方图+分位数的展示:

import warnings
warnings.filterwarnings('ignore')import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns# 随机构造一组数据
small_counts = np.random.randint(0, 10000, 200)
stars_counts = np.random.randint(0, 10, 200)
small_counts_log = np.log10(small_counts)biz_df = pd.DataFrame({'review_count':small_counts,'log_review_count':small_counts_log,'stars':stars_counts}
)# 计算4分位数
deciles = biz_df["review_count"].quantile([.25,.5,.75])
#
sns.set_style("whitegrid")
#
fig, ax = plt.subplots()
# 数据量等分10段的直方图
biz_df["review_count"].hist(ax=ax, bins=10)
# 在直方图上画出4分位数
for pos in deciles:# 打印每个分位数的值print('pos', pos)# x轴 纵向划线(红色)handle = plt.axvline(pos, color="r")# 加上图例ax.legend([handle], ['deciles'], fontsize=14)
# ax.set_yscale('log')
# ax.set_xscale('log')
ax.tick_params(labelsize=14)
ax.set_xlabel("Review Count", fontsize=14)
ax.set_ylabel("Occurence", fontsize=14)
fig.show()# or 对比展示直方图
fig, (ax1, ax2) = plt.subplots(2,1)
biz_df["review_count"].hist(ax=ax1, bins=10)
ax1.tick_params(labelsize=14)
ax1.set_xlabel("review_count", fontsize=14)
ax1.set_ylabel("Occurrence", fontsize=14)biz_df["log_review_count"].hist(ax=ax2, bins=10)
ax2.tick_params(labelsize=14)
ax2.set_xlabel('log10(review_count)', fontsize=14)
ax2.set_ylabel('Occurrence', fontsize=14)fig.show()

标准差与正态分布:

  • 对于一个正态分布,数据落在-1倍标准差与+1倍标准差之间的概率是69%;
  • 数据落在-1.96倍标准差与+1.96倍标准差之间的概率是95%;
  • 数据落在-2.58倍标准差与+2.58倍标准差之间的概率是99%;

抽样误差的计算:

是抽样 就会有误差,重复抽样和不重复抽样的误差是不一致的公式1:重复抽样误差计算 = (总体方差/抽样数量)^(1/2)
公式2:不重复抽样误差计算 = (总体方差 / 抽样数量 * (总体数量 - 抽样数量) / (总体数量 - 1))^(1/2)
当抽样数n = 总体数量N时 就没有误差了;某些情况,还需要在控制的误差水平之内确定抽样数量:有如下两个公式公式3:重复抽样数量n = 数据覆盖概率为α时均值加减标准差的倍数Z * 总体方差 / 受控制的方差
公式4:非重复抽样数量n = 总体的数量N * 数据覆盖概率为α时均值加减标准差的倍数Z * 总体方差 / (总体的数量N * 受控制的方差 + 数据覆盖概率为α时均值加减标准差的倍数Z * 总体方差)举例:
鱼塘不同区域抽样150条鱼 草鱼123 平均2公斤 标准差0.75公斤,在保证95.45%的概率下,估计草鱼每条平均重量?解:
由于是在不同区域网到的鱼,可认为这是一个重复抽样,代入公式1:误差 = 0.75/(123^(1/2)) = 0.07公斤,95%的概率就是均值上下两倍误差的范围,对应的就是Z= 2,即 2-0.07*Z ~ 2+0.07*Z问:
如前所述,这里貌似是将误差等价于了标准差。。。举例:
草鱼总量1000,标准差0.75公斤,在保证95.45%的概率误差不超过0.05公斤,需要捞几条草鱼?解:
这是一个不放回的抽样,代入公式4:概率α为95.45时的倍率Z是2总体方差为 0.75*0.75N是总体数量1000受控的方差是0.05*0.05即:
n = 1000 * 2 * 0.75*0.75 / (1000 * 0.05*0.05 + 2 * 0.75*0.75) = 310条问:
这里与实际视频讲解不符,具体疑问已提交up主,后续待确认;

工具包简介

数据分析工具:

  • 数据分析 numpy scipy pandas
  • 可视化 matplotlib
  • 数据挖掘与建模 sklearn seaborn Keras

关于Pandas请复习《利用Python进行数据分析(第2版)》的学习笔记,这里仅做常用项举例;

下面是对前文理论铺垫的代码实现:

# 引入pandas
import pandas as pd# DataFrame 和 Series 的操作基本一致,这里用Series进行举例
df = ...# 均值
df['test_a'].mean()# 中位数
df['test_a'].median()# 四分位数的第一个值
df['test_a'].quantile(q=0.25)# 众数(注意其数据类型)
df['test_b'].mode()# 标准差
df['test_a'].std()# 方差
df['test_a'].var()# 求和
df['test_a'].sum()# 偏态系数
df['test_a'].skew()# 峰态系数(注意 参考的是峰态系数为0的正态分布)
df['test_a'].kurt()

几个分布函数:

# 引入scipy的统计包
import scipy.stats as ss# c创建一个正太分布对象
ss.norm
# 查看对象
ss.norm.stats(moments='mvsk') # 会得到四个值 分别是 均值0 方差1 偏态系数0 峰态系数0
#
ss.norm.pdf(0.0) # x为0时 正太分布在纵坐标的值
#
ss.norm.ppf(0.9) # 正太分布的面积(也可以看成积分)是1,当传入0.9时 得到 面积从负无穷开始向正无穷方向累积 到0.9的时候 x的值是多少
#
ss.norm.cdf(2) # 2表示2倍标准差 即从负无穷到两倍标准差的位置 对应的面积(积分值),这里是0.97ss.norm.cdf(2) - ss.norm.cdf(-2) #  值为0.9545 对应的就是数据落在正负两倍标准差之间的概率为95%
# 生成一组符合正太分布的数字
ss.norm.rvs(size=10)# 卡方分布
ss.chi2# t分布
ss.t# f分布
ss.f# 操作同正态分布一致

关于抽样:


import pandas as pdpd.sample(n=10) # 按数量抽样
pd.sample(frac=0.01) # 按百分比抽样pd['test_c'].sample(n=10) # 按数量抽样
pd['test_c'].sample(frac=0.01) # 按百分比抽样

工具包接口较多,随用随查;

数据分类

常用分类方法:

  • 定类数据:根据事物离散、无差别属性进行的分类,如性别、名族;
  • 定序数据:界定数据大小,但不能测定差值,如收入等级:高中低;
  • 定距数据:可以界定数据大小,也可以测定差值,但无绝对零点,即乘除比率等计算是没有意义的,如摄氏温度;
  • 定比数据:可以界定数据大小,可测定差值,有绝对零点,相应的乘除结果也就有意义了,如长度 体积 身高 体重;

单属性分析:

  • 异常值分析:

    • 离散异常值
    • 连续异常值
    • 常识异常值
  • 对比分析:绝对数与相对数,时间、空间、理论维度比较
  • 结构分析:各组成部分的分布与规律
  • 分布分析:数据分布频率的显示分析

数据分析——Python内容学习【1】相关推荐

  1. python numpy读取数据_Python数据分析之numpy学习(一)

    文|刘顺祥 Python是一门不错的动态语言,其应用的领域非常广泛,如web开发.Linux运维.数据挖掘.机器学习.爬虫.推荐系统等.在学完<廖雪峰Python2.7教程>感觉受益匪浅, ...

  2. python数据分析培训内容可以_Python数据分析师

    阶段一 学完后能达到什么水平? 数据分析师认知篇 说 明:0基础入学,5大进阶之路,8大课程阶段,35+课程,1000+学时, 18大行业经典案例,两大商业项目实战!人工智能是你的终极目标! 课程时长 ...

  3. python编程大数据分析_大数据分析Python学习技巧

    大数据分析Python是任何开发人员都应该知道的重要编程语言.许多程序员使用这种语言来构建网站,创建学习算法以及执行其他重要任务.但是尝试学习大数据分析Python可能会令人感到恐惧,沮丧和困难,尤其 ...

  4. 学习大数据分析python编程指南

    每个人都喜欢Python.如果您打算开始从事数据科学事业,我们可以肯定Python在您心中已经占有特殊的位置.它直观且易于在任何平台上运行,并且具有大量令人惊叹的库和工具.与其他编程语言相比,Pyth ...

  5. 极客时间·3小时Python 数据分析和可视化 学习笔记

    3小时Python 数据分析和可视化 分解问题 数据分析 Python实现 总结经验 01 课程目标 掌握分解问题的能力 学会用Python进行数据处理.分析.展示 总结经验 02 确定目标 ​ 问题 ...

  6. Python语言学习:在python中,如何获取变量的本身字符串名字而非其值/内容及其应用(在代码中如何查找同值的所有变量名)

    Python语言学习:在python中,如何获取变量的本身字符串名字而非其值/内容及其应用(在代码中如何查找同值的所有变量名) 目录

  7. 谁说菜鸟不会数据分析python下载_刻意练习9:《谁说菜鸟不会数据分析python篇》第3章编程基础总计46页学习笔记...

    学习计划MyPlan9 主题:<谁说菜鸟不会数据分析python篇>第3章节 编程基础,总计46页. 时间:7.15-7.21 周内完成 各位星友们,在这个星球里每个人都要逼迫自己学习未知 ...

  8. python中ndarray对象实例化_Python数据分析之Numpy学习 2——NumPy 基础 ndarray对象

    Python数据分析之Numpy学习 2 -- NumPy 基础学习 NumPy(Numerical Python)是高性能科学计算和数据分析的基础包.NumPy的主要对象是同构数据多维容器(homo ...

  9. 从入门到入土:Python爬虫学习|实例练手|爬取新浪新闻搜索指定内容|Xpath定位标签爬取|代码注释详解

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  10. Python预测 数据分析与算法 学习笔记(特征工程、时间序列)

    微信公众号:数学建模与人工智能 GitHub - QInzhengk/Math-Model-and-Machine-Learning 第3章 探索规律 3.1 相关分析 相关关系是一种与函数关系相区别 ...

最新文章

  1. gpio pin和pad的区别
  2. software on macbook pro
  3. display:inline-block解决文字有间隙问题
  4. 知识点实用梳理:点对点协议(PPP)、广播信道多址访问、SMTP与POP3、RS232C、协议与端口号
  5. Andorid之MediaPlayer和AudioTrack播放Audio的区别与联系
  6. 29 Python - 字符与编码
  7. android服务器怎么做的,[Android]Android 制作一个HTTP服务器应用
  8. ubuntu java 1.6 安装,ubuntu 中安装java jdk 1.6
  9. pip 更改源   pip加速
  10. java怎么在哪写代码_java把这段代码不写死问题出现在哪儿
  11. iphone各机型参数对比_现在买哪一款iPhone更“香”?
  12. java求几何周长面积_JAVA:编写求解几何图形(如三角形,矩型,圆,多边型)的周长、面积的应用程序...
  13. moment获取几小时前_请问怎么把“多少小时前”精确到“多少小时多少分钟前”...
  14. 现代软件工程第一次结对编程(黄金点游戏)总结
  15. HTTP状态码介绍详细
  16. 关于SVN出现 svn working copy locked的原因及解决方法
  17. 74ls20设计半加器_数字电子技术实验练习内容
  18. word中插入公式2010和2016两个版本)
  19. 心率检测--异常可能
  20. 公司自动打卡与考勤作弊

热门文章

  1. 阿里巴巴国际站外贸邮开通的操作步骤
  2. 阿里巴巴国际站关键词的收集
  3. OSChina 周一乱弹 —— 为单身狗准备的菜
  4. Linux下的磁盘分区简介
  5. i7 1165g7和i7 10510u哪个好
  6. 国庆节快到了,用 Python 给自己制作国旗头像,其实很简单。
  7. 数据分析之FineReport
  8. Java实现蓝桥杯历届试题格子刷油漆
  9. 爱,是尘世间人人追求的人生之最,是生活中无处不在的美
  10. 蜀山剑侠传-----第二十回