python数据分析总结二


title: Python第三阶段学习总结

category: Python数据分析

date: 2021/12/10


一. 数据分析概述

1. 数据分析师的职责和技能栈

1.1 职责
  1. 监控数据
  2. 揪出异常
  3. 找到原因
  4. 探索趋势
1.2 技能栈
  1. 计算机科学(数据分析工具、编程语言、数据库)
  2. 数学和统计学(数据思维、统计思维)
  3. 人工智能(机器学习算法)
  4. 业务理解能力(沟通、表达、经验)
  5. 总结和表述能力(商业PPT、文字总结)

2. 数据分析的流程

我们提到数分析这个词很多时候可能指的都是狭义的数据分析,这类数据分析主要目标就是生成可视化报表并通过 这些报表来洞察业务中的问题。广义的数据分析还包含了数据挖掘的部分,不仅要通过数据实现对业务的监控和分 析,还要利用机器学习算法,找出隐藏在数据背后的知识,并利用这些知识为将来的决策提供支撑。简单的说,⼀ 个完整的数据分析应该包括基本的数据分析和深⼊的数据挖掘两个部分。

基本的数据分析工作⼀般包含以下几个方面的内容,当然因为行业和工作内容的不同会略有差异。

  1. 确定目标(输入):理解业务,确定指标口径
  2. 获取数据:数据仓库、电子表格、三方接口、网络爬虫、开放数据集等
  3. 清洗数据:缺失值/重复值/异常值处理、数据变换(格式化、规范化)、数据归约、离散化等
  4. 探索数据:运算、统计、分组、聚合、可视化
  5. 数据报告(输出):数据发布,工作成果总结汇报
  6. 分析洞察(后续):解释数据的变化,提出对应的方案

深入的数据挖掘工作通常包含以下几个方面的内容,当然因为行业和工作内容的不同会略有差异。

  1. 确定目标(输入):理解业务,明确挖掘目标
  2. 数据准备:数据采集、数据描述、数据探索、质量判定等
  3. 数据加工:提取数据、清洗数据、数据变换、特殊编码、降维、特征选择等
  4. 数据建模:模型比较、模型选择、算法应用
  5. 模型评估:交叉检验、参数调优、结果评价
  6. 模型部署(输出):模型落地、业务改进、运营监控、报告撰写

3. 数据分析相关库

3.1 三大神器
  1. NumPy:支持常见的数组和矩阵操作,通过 ndarray 类实现了对多维数组的封装,提供了操作这些数组的方法和函数集。由于 NumPy 内置了并行运算功能,当使用多核 CPU 时,Numpy会自动做并行计算。

  2. Pandas:pandas的核心是其特有的数据结构 DataFrameSeries ,这使得 pandas 可以处理包含不同类型的数据的负责表格和时间序列,这⼀点是NumPy的 ndarray 做不到的。使用 pandas,可以轻松顺利的加载各种形式的数据,然后对数据进行切片、切块、处理缺失值、聚合、重塑和可视化等操作。

  3. Matplotlib:matplotlib 是⼀个包含各种绘图模块的库,能够根据我们提供的数据创建高质量的图形。此外, matplotlib 还提供了 pylab 模块,这个模块包含了很多像 MATLAB ⼀样的绘图组件。

二. NumPy的运用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YhGsMgXQ-1639312945651)(week11-python%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E6%80%BB%E7%BB%93.assets/NumPy%20ndarray%E7%9A%84%E8%BF%90%E7%94%A8.png)]

三. Pandas的运用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0BfZO31d-1639312945663)(week11-python%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E6%80%BB%E7%BB%93.assets/pandas%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90.png)]

四. Matplotlib的运用

  1. Matplotlib —> 画图给自己看,用于数据探索

    • 画布 —> figure() —> Figure

    • 坐标系 —> subplot() —> 一个画布上可以有多个坐标系 —> Axes

    • 坐标轴 —> plot() / scatter() / bar() / pie() / hist() / box()

      • 趋势 —> 折线图
      • 关系 —> 散点图
      • 差异 —> 柱状图
      • 占比 —> 饼图
      • 分布 —> 直方图
      • 描述性统计信息 —> 箱线图(盒须图)
    # 折线图
    x = np.linspace(-2 * np.pi, 2 * np.pi, 60)
    y1, y2 = np.sin(x), np.cos(x)
    plt.figure(figsize=(8, 4))
    plt.plot(x, y1, color='blue', marker='^')
    plt.plot(x, y2, color='green', marker='o')
    
    # 散点图
    plt.scatter(x, y)
    plt.plot(x, y_hat, color='red')
    plt.plot(x, y_hat2, color='green')
    plt.xlabel('距离(km)')
    plt.ylabel('单位(万元)')
    
    # 柱状图
    ser.plot(figsize=(6, 3), width=0.3, kind='bar', color=['r', 'y', 'b', 'g'])
    plt.grid(True, alpha=0.25, axis='y', linestyle='--')
    plt.xticks(rotation=0)
    plt.yticks(np.arange(0, 601, 100))
    # 显示图列
    plt.legend(['需求量'])
    # 在柱状图的柱子上绘制数字
    for i in range(ser.size):
        # plt.text里前两个放的是坐标
        plt.text(i, ser[i] + 5, ser[i], ha='center')
    plt.show
    
    # 柱状图和折线图
    temp = np.round(lagou_df.groupby('city').salary.mean(), 1)
    temp.plot(kind='bar', figsize=(10, 4))
    temp.plot(kind='line', color='red', marker='o', linestyle='--')
    plt.grid(True, alpha=0.25, axis='y', linestyle='--')
    plt.xticks(rotation=0)
    plt.yticks(np.arange(0, 30, 5))
    plt.xlabel('city')
    plt.ylabel('sal')
    for i in range(temp.size):
        plt.text(i, temp[i] + 1, temp[i], ha='center')
    plt.show()
    
    # 饼图(wedgeprops参数 ---> 甜甜圈图)
    temp.plot(
        kind='pie', figsize=(6,6), autopct='%.1f%%',
        wedgeprops=dict(width=0.6, edgecolor='white'),
        pctdistance=0.7,
        explode=(0, 0, 0, 0.2, 0, 0, 0, 0, 0, 0),
        shadow=True
    )
    plt.ylabel('')
    plt.show()
    
    # 箱线图 ---> 找到异常值
    plt.boxplot(heights, whis=3)
    plt.show()
    
  2. Seaborn —> 对Matplotlib做了封装,用默认的配置减少绘图参数(具体代码上官网查看示例 http://seaborn.pydata.org/index.html)

    !pip install seaborn
    
    import seaborn as sns
    
    sns.set_theme(style="ticks")
    sns.pairplot(tips_df, y_vars='tip', x_vars=['total_bill', 'size'] )
    
  3. ECharts / D3.js —> 商业数据看板 / 数字化大屏 —> 前端JavaScript绘图库

    • 后端程序:提供绘图需要使用的数据(API接口)—> 数据的服务化 —> Java / PHP / Python
    • 前端程序:通过HTTP获取数据,用JavaScript将数据渲染到网页上

    —> PyECharts(具体代码上官网查看示例 https://pyecharts.org/#/zh-cn/intro)

    !pip install pyecharts
    !pip install snapshot_selenium
    
    # 柱状图
    from pyecharts import options as opts
    from pyecharts.charts import Bar
    from pyecharts.globals import ThemeType
    
    bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
    bar.add_xaxis(ser.index.values.tolist())
    bar.add_yaxis('成交量', np.round((ser.values / 10 ** 6), 2).tolist())
    # bar.render('bar.html')
    bar.render_notebook()
    
    # 柱状图
    from pyecharts.charts import Bar
    from pyecharts import options as opts
    from pyecharts.globals import ThemeType
    # from pyecharts.render import make_snapshot
    # from snapshot_selenium import snapshot
    
    
    bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
    bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
    bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
    bar.add_yaxis("商家B", [15, 6, 45, 20, 35, 66])
    bar.add_yaxis("商家C", [10, 15, 25, 30, 65, 76])
    # 全局参数
    bar.set_global_opts(title_opts=opts.TitleOpts(
        title="销售统计图", subtitle="服装区商家销售统计", pos_left='12%'
    ),
        toolbox_opts=opts.ToolboxOpts(),
        datazoom_opts=opts.DataZoomOpts()
                       )
    bar.render_notebook()
    # 可以将形成的图表下载
    # make_snapshot(snapshot, bar.render(), "bar.png")
    

在这里插入图片描述

图表的标记形状选择

图表的颜色选择

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值