python数据分析(juypter)

2024-06-12 20:44
文章标签 python 数据分析 juypter

本文主要是介绍python数据分析(juypter),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 数据合并

    • pd.concat([df1,df2])

      • index 两个df 有相同的行索引, 可以拼接起来, 左右拼接, axis = 1

      • column 两个df 有相同的列名, 可以拼接起来, 上下拼接 默认的

    • pd.merge /df.merge

      • 类似于SQL的join

      • 两个df 有取值相同的列, 可以通过merge 连接起来

      • how = left,right,inner outer

    • df.join()

      • 默认类似于 pd.concat([df1,df2],axis = 1)

      • df.join(df2,on='列名') df的一列和df2的index值相同可以拼接起来

  • 数据透视表, 作用和分组聚合一样, 只不过展示的方式有差异

  • 数据可视化

    • Matplotlib 基本套路

      • import matplotlib.pyplot as plt

      • plt.figure(figsize=()) fig,ax = plt.subplots(figsize=())

      • plt.plot()

      • plt.show()

    • 直方图 连续型变量, 单变量看分布

      • plt.hist(bins = ) 分成几组

    • 散点图 两个连续型变量, 看之间的关系

      • plt.scatter()

      • 气泡 就是散点, 只不过多了一个维度通过这个维度的数据控制点的大小

      • 蜂巢 hexbin 可以显示出不同区域数据点分布的多少

    • 柱状图 类别型变量,对比数量或者平均值 不同从业时间平均薪资比较

      • plt.bar()

    • 饼图 每个部分之间对比, 所有的部分相加构成一个完整的整体 年底公司 不同部门收入构成分析

      • plt.pie()

    • 箱线图

1 数据可视化—— seaborn

  • 需要画图的场景

    • 对外要做数据分析报告, 做文档, 为了直观的向听众、客户、同事说明自己的观点,可以在输出结论的时候配上图表

    • 对自己来说, 如果业务不是很熟悉, 想快速的找到数据之间的规律,可以画图

  • seaborn 和 matplotlib ,pandas 的区别 和联系

    • seaborn是基于matplotlib 的,是对matplotlib 绘图的封装, 对pandas 的df支持的也很好

    • 区别:

      • seaborn 的某些绘图方法, 先做了一些统计的计算, 再画图

      • seaborn 的 API 套路

        • import seaborn as sns

        • sns.XXXplot(data = 绘图要使用的dataframe对象, x = '列名', y =‘列名’ )

1.1 散点图

seaborn绘制散点图

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
tips_df = pd.read_csv('C:/Develop/顺义48/day01/02_代码/data/tips.csv')
# 使用小费的数据
tips_df['sex'].value_counts()
# 查看性别列取值情况
tips_df['smoker'].value_counts()
# 查看是否抽烟这一列 数据取值情况
tips_df['time'].value_counts()
# 查看用餐时间这一列 数据取值情况 dinner 晚餐 lunch 午餐
tips_df['size'].value_counts()
# 用餐人数 1-6
​
plt.figure(figsize=(16,10))
sns.scatterplot(x='total_bill', y='tip', data=tips_df)
plt.show()
#plt.figure(figsize=(16,10)) seaborn绘图区域的大小会发生变化, 说明seaborn画图还是使用了matplotlib
​
​
sns.scatterplot(x='total_bill', y='tip', data=tips_df,hue='sex',style='smoker',size='time')
plt.show()

seaborn api 通用的几个参数

  • data 数据对应的df

  • x,y 传入df中的列名

  • hue 通过这个参数传入一个类别型变量, 会自动区分颜色,画图

关系散点图

sns.regplot(data=tips_df,x='total_bill',y='tip')

分类散点图

f = plt.figure()
f.add_subplot(2,1,1)
# 按照x属性所对应的类别分别展示y属性的值,适用于分类数据
# 不同饭点的账单总金额的散点图
sns.stripplot(data=tips_df, x='time', y='total_bill')
f.add_subplot(2,1,2)
# hue通用参数按颜色划分
# jitter=True 当数据点重合较多时,尽量分散的展示数据点
# dodge=True 拆分分类
sns.stripplot(data=tips_df, x='time', y='total_bill', jitter=True, dodge=True, hue='day')
plt.show()

1.2 提琴图

sns.violinplot(data=tips_df, x='time', y='total_bill',hue='sex')

作用和箱线图类似, 比箱线图多显示出数据的整体分布情况, 突出的部分说明样本分布的比较多

1.3 柱状图

sns.countplot(data=tips_df, y='time'

sns.countplot(data=tips_df, x='time') # 绘制竖直的柱状图

相当于先对time计数,再画柱状图

tips_df['time'].value_counts().plot.bar()
sns.barplot(data=tips_df, x='day', y='total_bill',estimator='mean',errorbar=None)

estimator 默认是mean 对x进行分组, 对y计算平均 可以换其它的聚合方法比如sum max min

tips_df.groupby(['day'])['total_bill'].mean().sort_values(ascending=False).plo1t.bar()

,errorbar=None 可以关闭, 默认柱子上会有一个误差棒, 黑色的线

如果数据是从海量数据中采样出来的, 使用采样的数来估计海量样本的整体情况,这个时候errorbar 显示了这个统计量可能得分布范围,

1.4 热力图

最常用的使用场景, 对相关性进行可视化

sns.heatmap(tips_df.corr())

1.5 成对关系图

一张图中表示多个变量(数值型)之间的两两关系

sns.pairplot(tips_df)

可以通过PairGrid 来控制成对关系图不同位置使用哪种API来绘图

pair_grid = sns.PairGrid(tips_df)
pair_grid.map_upper(sns.kdeplot) # 设置 成对关系图, 右上角的部分使用的绘图方法
pair_grid.map_diag(sns.histplot) #  设置 成对关系图, 对角线的部分使用的绘图方法
pair_grid.map_lower(sns.scatterplot) # 设置 成对关系图, 左下角的部分使用的绘图方法

1.5 通用样式配置

sns.set(context='paper', style='darkgrid',palette='muted', font='sans-serif', font_scale=1
)
plt.figure(figsize=(16,10))
# context: 参数控制着默认的画幅大小,分别有 {paper, notebook, talk, poster} 四个值。其中,poster > talk > notebook > paper。
# style:参数控制默认样式,分别有 {darkgrid, whitegrid, dark, white, ticks},你可以自行更改查看它们之间的不同。
# palette:参数为预设的调色板。分别有 {deep, muted, bright, pastel, dark, colorblind} 等,你可以自行更改查看它们之间的不同。
# font:用于设置字体
# font_scale:设置字体大小sns.scatterplot(data=tips_df, x='total_bill', y='tip', hue='sex', style='smoker', size='time')
plt.show()

2 数据分析业务

2.1 重要指标

活跃: DAU、MAU 日活月活

留存: 次留、七留 通过这个指标可以考察渠道

转化率、转发率:

  • 点击转化率 点击次数/展示次数

  • 电商转化率 购买人数/进店的人数

  • 转发率 : 好多运营是以转发为最终目标的, 转发的人数/访问人数

GMV 总交易金额

PV/UV 网站时代留下来的流量指标 PV点击 UV 独立访客数

广告费用

  • CPM 千次展示首费

  • CPC 点击 点一次收一次钱

2.2 数据分析思维模型介绍

电商黄金公式

销售额 = 访客数 * 转化率 * 客单价

GROW

阿里AIPL, 字节5A模型 京东4A模型

  • 使用这些思维模型,把用户划分成不同的阶段, 从刚注册 → 成为忠实用户

  • 可以考察不同时间 处于不同阶段的用户量

  • 考核 处于每个阶段用户数量的转化率

  • 利用模型 进行目标拆解和追踪

3 Excel自动化报表

当数据在很多excel文件中保存, 每张表处理逻辑类似,或者数据在多张表保存, 固定的操作逻辑经常要重复进行, 这样的场景就适合用Pandas的代码把整个过程自动化, 优势:

  • 代码写好了之后, 再有类似的需求只需要运行一下代码就可以搞定

  • 出错的概率很低的

如果需求是处理很多不同的表格,每张表处理的逻辑一样, 先把一张表处理的逻辑的代码写好, 再遍历所有的Excel文件, 重复执行相同的逻辑

import pandas as pd
name = '睡袋&睡袋.xlsx'
data_dir = 'C:/Develop/顺义48/day01/02_代码/data/report/'
df = pd.read_excel(data_dir + name,parse_dates=[0])df.info()
df.head()
df.describe()
# 上面几行就是了解数据的分布情况# 提取2023年的数据
df['年份'] = df['日期'].dt.year
df_2023 = df[df['年份']==2023]
# 计算销售额
df_2023['销售额'] = df_2023['访客数']*df_2023['转化率']*df_2023['客单价']
# 计算每个品牌在2023年的销售额
pd.set_option('display.float_format', lambda x: '%.2f' % x)
df_sum = df_2023.groupby('品牌')['销售额'].sum().reset_index()
#%%
# name = '睡袋&睡袋.xlsx'
df_sum['行业'] = name.replace('.xlsx','')
df_sum.head()

把上面的代码应用到整个文件夹,

import os
result_df = pd.DataFrame() # 创建一个空白的DF 用来保存结果
for name in os.listdir(data_dir):df = pd.read_excel(data_dir + name,parse_dates=[0])# 提取2023年的数据df['年份'] = df['日期'].dt.yeardf_2023 = df[df['年份']==2023]# 计算销售额df_2023['销售额'] = df_2023['访客数']*df_2023['转化率']*df_2023['客单价']# 统计每个品牌的全年销售额df_sum = df_2023.groupby('品牌')['销售额'].sum().reset_index()# name = '睡袋&睡袋.xlsx'df_sum['行业'] = name.replace('.xlsx','')result_df = pd.concat([result_df, df_sum])
result_df.groupby('品牌')['销售额'].sum().reset_index().sort_values('销售额',ascending= False).head()

os.listdir(data_dir)

  • 传入一个目录的路径, 返回这个目录下的所有文件,通过一个列表返回

把在notebook中的代码, 移到.py文件里, 再有类似的需求, 直接运行这个.py文件, 就可以了

4 广告效果分析

4.1 漏斗分析

什么时候用:业务流程相对规范、周期较长、环节较多

怎么用: 对于电商业务来说

  • 计算每个阶段的转化率,漏斗环节中, 后一个阶段的人数/前一个阶段人数

    • 搜索打开转化率 搜索人数/打开应用人数

    • 搜索列表→详情转化 打开详情页人数/ 搜索人数

  • 计算整体的转化率 购买的人数/访客数

漏斗分析的作用

  • 当最关心的目标, 比如电商GMV 有波动的时候, 能够快速定位哪个环节有异常

  • 做不同人群漏斗的对比, 找到针对不同人群问题

这篇关于python数据分析(juypter)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1055290

相关文章

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

基于Python实现高效PPT转图片工具

《基于Python实现高效PPT转图片工具》在日常工作中,PPT是我们常用的演示工具,但有时候我们需要将PPT的内容提取为图片格式以便于展示或保存,所以本文将用Python实现PPT转PNG工具,希望... 目录1. 概述2. 功能使用2.1 安装依赖2.2 使用步骤2.3 代码实现2.4 GUI界面3.效

Python获取C++中返回的char*字段的两种思路

《Python获取C++中返回的char*字段的两种思路》有时候需要获取C++函数中返回来的不定长的char*字符串,本文小编为大家找到了两种解决问题的思路,感兴趣的小伙伴可以跟随小编一起学习一下... 有时候需要获取C++函数中返回来的不定长的char*字符串,目前我找到两种解决问题的思路,具体实现如下:

python连接本地SQL server详细图文教程

《python连接本地SQLserver详细图文教程》在数据分析领域,经常需要从数据库中获取数据进行分析和处理,下面:本文主要介绍python连接本地SQLserver的相关资料,文中通过代码... 目录一.设置本地账号1.新建用户2.开启双重验证3,开启TCP/IP本地服务二js.python连接实例1.

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

Python从零打造高安全密码管理器

《Python从零打造高安全密码管理器》在数字化时代,每人平均需要管理近百个账号密码,本文将带大家深入剖析一个基于Python的高安全性密码管理器实现方案,感兴趣的小伙伴可以参考一下... 目录一、前言:为什么我们需要专属密码管理器二、系统架构设计2.1 安全加密体系2.2 密码强度策略三、核心功能实现详解

Python Faker库基本用法详解

《PythonFaker库基本用法详解》Faker是一个非常强大的库,适用于生成各种类型的伪随机数据,可以帮助开发者在测试、数据生成、或其他需要随机数据的场景中提高效率,本文给大家介绍PythonF... 目录安装基本用法主要功能示例代码语言和地区生成多条假数据自定义字段小结Faker 是一个 python

Python实现AVIF图片与其他图片格式间的批量转换

《Python实现AVIF图片与其他图片格式间的批量转换》这篇文章主要为大家详细介绍了如何使用Pillow库实现AVIF与其他格式的相互转换,即将AVIF转换为常见的格式,比如JPG或PNG,需要的小... 目录环境配置1.将单个 AVIF 图片转换为 JPG 和 PNG2.批量转换目录下所有 AVIF 图

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

详解如何通过Python批量转换图片为PDF

《详解如何通过Python批量转换图片为PDF》:本文主要介绍如何基于Python+Tkinter开发的图片批量转PDF工具,可以支持批量添加图片,拖拽等操作,感兴趣的小伙伴可以参考一下... 目录1. 概述2. 功能亮点2.1 主要功能2.2 界面设计3. 使用指南3.1 运行环境3.2 使用步骤4. 核