当前位置: 首页 > wzjs >正文

贩卖做网站资料百度关键词挖掘工具

贩卖做网站资料,百度关键词挖掘工具,wordpress 文章版权 插件,网络代理网站🌟引言: 欢迎来到Python星球🪐的第20天!今天我们将踏入数据分析的世界,学习如何使用pandas处理数据并提取有价值的信息。无论你是想分析商业销售数据、股票市场趋势还是科学实验结果,pandas都是你必不可少的…

🌟引言
欢迎来到Python星球🪐的第20天!今天我们将踏入数据分析的世界,学习如何使用pandas处理数据并提取有价值的信息。无论你是想分析商业销售数据、股票市场趋势还是科学实验结果,pandas都是你必不可少的工具!
在这里插入图片描述
上一篇:Python星球日记 - 第19天:Web开发基础

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》
创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊)

目录

    • 一、Pandas简介:数据分析的瑞士军刀
      • 1. Pandas的两大核心数据结构
      • 2. 安装并导入pandas
    • 二、数据处理基础
      • 1. 创建DataFrame
      • 2. 基本数据查看
      • 3. 数据选择与索引
    • 三、数据清洗与处理
      • 1. 处理缺失值
      • 2. 数据转换
      • 3. 数据聚合
    • 四、数据分析与可视化
      • 1. 基本统计分析
      • 2. 简单可视化
    • 五、实战练习:销售数据分析
      • 1. 读取CSV文件
      • 2. 数据清洗
      • 3. 数据分析
      • 4. 数据可视化
      • 5. 高级分析:RFM客户分析
      • 6.完整代码
    • 详细图表清单
    • 六、总结与进阶学习路径
      • 1. 今日要点
      • 2. 进阶学习方向
      • 3. 实践建议
    • 七、练习题

专栏介绍: Python星球日记专栏介绍(持续更新ing)
更多Python知识,请关注我、订阅专栏《 Python星球日记》,内容持续更新中…

一、Pandas简介:数据分析的瑞士军刀

Pandas是Python数据分析的核心库,它提供了高效的数据结构和数据分析工具。如果你想在Python中进行数据分析,pandas是必不可少的库。

1. Pandas的两大核心数据结构

Pandas有两个基本的数据结构:SeriesDataFrame

  • Series:一维数组结构,类似于Python的列表,但具有标签索引
  • DataFrame:二维表格数据结构,可以看作是多个Series组成的表格

在这里插入图片描述

2. 安装并导入pandas

在开始学习之前,我们需要安装pandas库并导入它:

1️⃣使用 pip 安装pandas

pip install pandas

2️⃣通过import导入pandas库

# 导入pandas
import pandas as pd  # pd是pandas的常用缩写

二、数据处理基础

1. 创建DataFrame

DataFrame是pandas最常用的数据结构,类似于Excel表格或SQL表。让我们看看如何创建一个DataFrame:

import pandas as pd
import numpy as np# 从字典创建DataFrame
data = {'姓名': ['张三', '李四', '王五', '赵六'],'年龄': [25, 30, 35, 40],'城市': ['北京', '上海', '广州', '深圳'],'工资': [10000, 20000, 15000, 25000]
}df = pd.DataFrame(data)
print(df)

输出结果:

   姓名  年龄  城市    工资
0  张三  25  北京  10000
1  李四  30  上海  20000
2  王五  35  广州  15000
3  赵六  40  深圳  25000

2. 基本数据查看

拿到数据后,首先需要对数据有个基本了解:

# 查看前几行数据
print(df.head())  # 默认显示前5行
# 查看数据基本信息
print(df.info())
# 查看数据统计摘要
print(df.describe())
# 查看数据维度
print(df.shape)  # 输出: (行数, 列数)

完整代码:

import pandas as pd
import numpy as np# 从字典创建DataFrame
data = {'姓名': ['张三', '李四', '王五', '赵六'],'年龄': [25, 30, 35, 40],'城市': ['北京', '上海', '广州', '深圳'],'工资': [10000, 20000, 15000, 25000]
}df = pd.DataFrame(data)
# 查看前几行数据
print(df.head())  # 默认显示前5行# 查看数据基本信息
print(df.info())# 查看数据统计摘要
print(df.describe())# 查看数据维度
print(df.shape)  # 输出: (行数, 列数)

输出结果:

   姓名  年龄  城市     工资
0  张三  25  北京  10000
1  李四  30  上海  20000
2  王五  35  广州  15000
3  赵六  40  深圳  25000
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 4 columns):#   Column  Non-Null Count  Dtype 
---  ------  --------------  -----0   姓名      4 non-null      object1   年龄      4 non-null      int642   城市      4 non-null      object3   工资      4 non-null      int64
dtypes: int64(2), object(2)
memory usage: 260.0+ bytes
None年龄            工资
count   4.000000      4.000000
mean   32.500000  17500.000000
std     6.454972   6454.972244
min    25.000000  10000.000000
25%    28.750000  13750.000000
50%    32.500000  17500.000000
75%    36.250000  21250.000000
max    40.000000  25000.000000
(4, 4)

3. 数据选择与索引

pandas提供了多种方式来选择数据:

# 选择单列
print(df['姓名'])  # 返回Series
# 选择多列
print(df[['姓名', '工资']])  # 返回DataFrame
# 通过位置选择行
print(df.iloc[0])  # 选择第一行
print(df.iloc[0:2])  # 选择前两行
# 通过标签选择行
print(df.loc[0])  # 选择索引为0的行
# 条件选择
print(df[df['年龄'] > 30])  # 选择年龄大于30的行

完整代码:

import pandas as pd
import numpy as np# 从字典创建DataFrame
data = {'姓名': ['张三', '李四', '王五', '赵六'],'年龄': [25, 30, 35, 40],'城市': ['北京', '上海', '广州', '深圳'],'工资': [10000, 20000, 15000, 25000]
}df = pd.DataFrame(data)
# 选择单列
print(df['姓名'])  # 返回Series# 选择多列
print(df[['姓名', '工资']])  # 返回DataFrame# 通过位置选择行
print(df.iloc[0])  # 选择第一行
print(df.iloc[0:2])  # 选择前两行# 通过标签选择行
print(df.loc[0])  # 选择索引为0的行# 条件选择
print(df[df['年龄'] > 30])  # 选择年龄大于30的行

输出结果:

0    张三
1    李四
2    王五
3    赵六
Name: 姓名, dtype: object姓名     工资
0  张三  10000
1  李四  20000
2  王五  15000
3  赵六  25000
姓名       张三
年龄       25
城市       北京
工资    10000
Name: 0, dtype: object姓名  年龄  城市     工资
0  张三  25  北京  10000
1  李四  30  上海  20000
姓名       张三
年龄       25
城市       北京
工资    10000
Name: 0, dtype: object姓名  年龄  城市     工资
2  王五  35  广州  15000
3  赵六  40  深圳  25000

三、数据清洗与处理

在实际工作中,数据往往不是完美的,需要进行清洗和处理

清洗流程如下:

在这里插入图片描述

1. 处理缺失值

缺失值是数据分析中常见的问题。pandas使用NaN(Not a Number)表示缺失值:

# 创建包含缺失值的DataFrame
df_missing = pd.DataFrame({'姓名': ['张三', '李四', '王五', None],'年龄': [25, None, 35, 40],'城市': ['北京', '上海', None, '深圳'],'工资': [10000, 20000, None, 25000]
})# 检查缺失值
print(df_missing.isnull().sum())  # 统计每列的缺失值数量# 处理缺失值的方法
# 1. 删除包含缺失值的行
df_drop = df_missing.dropna()# 2. 填充缺失值
df_fill = df_missing.fillna({'姓名': '未知','年龄': df_missing['年龄'].mean(),  # 使用平均年龄填充'城市': '未知','工资': df_missing['工资'].median()  # 使用工资中位数填充
})

2. 数据转换

数据转换是数据处理中的重要步骤:

# 将年龄转换为分类
df['年龄段'] = pd.cut(df['年龄'], bins=[20, 30, 40, 50], labels=['20-30岁', '30-40岁', '40-50岁'])# 数值变换
df['工资_千元'] = df['工资'] / 1000# 字符串操作
df['城市_省份'] = df['城市'] + '市'

3. 数据聚合

聚合操作可以帮助我们了解数据的整体特征:

# 按城市分组计算平均工资
city_salary = df.groupby('城市')['工资'].mean()
print(city_salary)# 多列聚合
summary = df.groupby('城市').agg({'工资': ['mean', 'max', 'min'],'年龄': ['mean', 'max', 'min']
})
print(summary)

四、数据分析与可视化

pandasmatplotlibseaborn结合,可以轻松实现数据可视化。

数据分析流程图:

在这里插入图片描述

1. 基本统计分析

# 描述性统计
print(df.describe())# 相关性分析
print(df[['年龄', '工资']].corr())# 唯一值计数
print(df['城市'].value_counts())

2. 简单可视化

import matplotlib.pyplot as plt
import seaborn as sns# 设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号# 绘制柱状图
df.groupby('城市')['工资'].mean().plot(kind='bar', figsize=(10, 6))
plt.title('各城市平均工资')
plt.ylabel('平均工资(元)')
plt.xticks(rotation=0)
plt.show()# 绘制散点图
plt.figure(figsize=(10, 6))
plt.scatter(df['年龄'], df['工资'])
plt.title('年龄与工资关系')
plt.xlabel('年龄')
plt.ylabel('工资(元)')
plt.grid(True)
plt.show()

五、实战练习:销售数据分析

现在,让我们通过一个实际的例子来应用我们所学的知识。假设我们有一个名为sales_data.csv的销售数据文件,包含了商品的销售记录。

蓝奏云:https://www.lanzoum.com/icqEd2t4joti
密码:99ku

在这里插入图片描述

1. 读取CSV文件

# 读取CSV文件
sales_df = pd.read_csv('sales_data.csv')# 查看前几行数据
print(sales_df.head())# 查看数据信息
print(sales_df.info())

假设我们的CSV文件包含以下列:

  • 日期: 销售日期
  • 商品ID: 商品编号
  • 商品名称: 商品名称
  • 类别: 商品类别
  • 单价: 商品单价
  • 数量: 销售数量
  • 总金额: 单价 × 数量
  • 客户ID: 客户编号
  • 销售员: 销售员姓名

2. 数据清洗

# 检查缺失值
print(sales_df.isnull().sum())# 处理缺失值
sales_df['单价'].fillna(sales_df['单价'].mean(), inplace=True)
sales_df['商品名称'].fillna('未知商品', inplace=True)# 转换日期列为日期类型
sales_df['日期'] = pd.to_datetime(sales_df['日期'])# 创建新的时间特征
sales_df['月份'] = sales_df['日期'].dt.month
sales_df['季度'] = sales_df['日期'].dt.quarter
sales_df['是否周末'] = sales_df['日期'].dt.dayofweek >= 5

3. 数据分析

让我们探索一些业务问题:

# 1. 各类别商品的销售总额
category_sales = sales_df.groupby('类别')['总金额'].sum().sort_values(ascending=False)
print("各类别商品销售总额:")
print(category_sales)# 2. 月度销售趋势
monthly_sales = sales_df.groupby('月份')['总金额'].sum()
print("\n月度销售总额:")
print(monthly_sales)# 3. 热销商品分析
top_products = sales_df.groupby('商品名称')['数量'].sum().sort_values(ascending=False).head(10)
print("\n销量前10的商品:")
print(top_products)# 4. 销售员业绩分析
salesperson_performance = sales_df.groupby('销售员')['总金额'].sum().sort_values(ascending=False)
print("\n销售员业绩排名:")
print(salesperson_performance)# 5. 周末与工作日销售对比
weekend_vs_weekday = sales_df.groupby('是否周末')['总金额'].sum()
print("\n周末与工作日销售对比:")
print(weekend_vs_weekday)

4. 数据可视化

# 1. 类别销售总额柱状图
plt.figure(figsize=(12, 6))
category_sales.plot(kind='bar')
plt.title('各类别商品销售总额')
plt.xlabel('商品类别')
plt.ylabel('销售总额(元)')
plt.xticks(rotation=45)
plt.grid(axis='y')
plt.show()# 2. 月度销售趋势折线图
plt.figure(figsize=(12, 6))
monthly_sales.plot(kind='line', marker='o')
plt.title('月度销售趋势')
plt.xlabel('月份')
plt.ylabel('销售总额(元)')
plt.grid(True)
plt.show()# 3. 热销商品前10名
plt.figure(figsize=(14, 7))
top_products.plot(kind='barh')
plt.title('销量前10的商品')
plt.xlabel('销售数量')
plt.ylabel('商品名称')
plt.grid(axis='x')
plt.show()

5. 高级分析:RFM客户分析

RFM分析是一种常用的客户价值分析模型,基于以下三个维度:

  • Recency(最近购买时间):客户最近一次购买的时间
  • Frequency(购买频率):客户购买的次数
  • Monetary(购买金额):客户购买的金额
# 获取最大日期(数据集中的最后一天)
max_date = sales_df['日期'].max()# 按客户ID分组计算RFM指标
rfm = sales_df.groupby('客户ID').agg({'日期': lambda x: (max_date - x.max()).days,  # 最近购买时间(天数)'商品ID': 'count',  # 购买频率(订单数)'总金额': 'sum'  # 购买金额
})# 重命名列
rfm.columns = ['最近购买时间', '购买频率', '购买金额']# 查看RFM分析结果
print(rfm.head())# 对RFM指标进行分段
rfm['R_Score'] = pd.qcut(rfm['最近购买时间'], 5, labels=[5, 4, 3, 2, 1])
rfm['F_Score'] = pd.qcut(rfm['购买频率'], 5, labels=[1, 2, 3, 4, 5])
rfm['M_Score'] = pd.qcut(rfm['购买金额'], 5, labels=[1, 2, 3, 4, 5])# 计算RFM总分
rfm['RFM_Score'] = rfm['R_Score'].astype(str) + rfm['F_Score'].astype(str) + rfm['M_Score'].astype(str)# 识别高价值客户
high_value = rfm[rfm['RFM_Score'].str.startswith('5')]
print("\n高价值客户:")
print(high_value.head())

6.完整代码

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from datetime import datetime# 设置中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号# 1. 读取CSV文件
print("1. 读取销售数据文件...")
sales_df = pd.read_csv('sales_data.csv')# 查看前几行数据
print("\n数据预览:")
print(sales_df.head())# 查看数据信息
print("\n数据基本信息:")
print(sales_df.info())# 查看数据统计摘要
print("\n数据统计摘要:")
print(sales_df.describe())# 2. 数据清洗
print("\n2. 进行数据清洗...")# 检查缺失值
print("\n缺失值统计:")
print(sales_df.isnull().sum())# 处理缺失值
# 对于缺失的单价,用同一商品的平均单价填充
print("\n处理缺失的单价...")
for product_id in sales_df['商品ID'].unique():mask = (sales_df['商品ID'] == product_id) & (sales_df['单价'].isnull())if mask.any():avg_price = sales_df[sales_df['商品ID'] == product_id]['单价'].mean()sales_df.loc[mask, '单价'] = avg_price# 对于缺失的数量,用同一商品的中位数填充
print("处理缺失的数量...")
for product_id in sales_df['商品ID'].unique():mask = (sales_df['商品ID'] == product_id) & (sales_df['数量'].isnull())if mask.any():median_quantity = sales_df[sales_df['商品ID'] == product_id]['数量'].median()sales_df.loc[mask, '数量'] = median_quantity# 重新计算总金额(针对缺失的总金额或者填充了单价/数量的记录)
print("更新总金额...")
mask = (sales_df['总金额'].isnull()) | (sales_df['单价'].isnull().shift(fill_value=False)) | (sales_df['数量'].isnull().shift(fill_value=False))
sales_df.loc[mask, '总金额'] = sales_df.loc[mask, '单价'] * sales_df.loc[mask, '数量']# 转换日期列为日期类型
print("转换日期格式...")
sales_df['日期'] = pd.to_datetime(sales_df['日期'])# 创建新的时间特征
print("创建时间特征...")
sales_df['月份'] = sales_df['日期'].dt.month
sales_df['季度'] = sales_df['日期'].dt.quarter
sales_df['是否周末'] = sales_df['日期'].dt.dayofweek >= 5  # 5和6代表周六和周日# 查看清洗后的数据
print("\n清洗后的数据预览:")
print(sales_df.head())
print("\n清洗后的缺失值统计:")
print(sales_df.isnull().sum())# 3. 数据分析
print("\n3. 进行数据分析...")# 1. 各类别商品的销售总额
print("\n各类别商品销售总额:")
category_sales = sales_df.groupby('类别')['总金额'].sum().sort_values(ascending=False)
print(category_sales)# 2. 月度销售趋势
print("\n月度销售总额:")
monthly_sales = sales_df.groupby('月份')['总金额'].sum()
print(monthly_sales)# 3. 热销商品分析
print("\n销量前10的商品:")
top_products = sales_df.groupby('商品名称')['数量'].sum().sort_values(ascending=False).head(10)
print(top_products)# 4. 销售员业绩分析
print("\n销售员业绩排名:")
salesperson_performance = sales_df.groupby('销售员')['总金额'].sum().sort_values(ascending=False)
print(salesperson_performance)# 5. 周末与工作日销售对比
print("\n周末与工作日销售对比:")
weekend_vs_weekday = sales_df.groupby('是否周末')['总金额'].sum()
print(weekend_vs_weekday)# 6. 客户消费分析
print("\n客户消费排名:")
customer_spending = sales_df.groupby('客户ID')['总金额'].sum().sort_values(ascending=False)
print(customer_spending)# 7. 季度销售趋势
print("\n季度销售总额:")
quarterly_sales = sales_df.groupby('季度')['总金额'].sum()
print(quarterly_sales)# 8. 商品均价分析
print("\n各类别商品均价:")
category_avg_price = sales_df.groupby('类别')['单价'].mean().sort_values(ascending=False)
print(category_avg_price)# 4. 数据可视化
print("\n4. 创建数据可视化...")# 设置图表风格
sns.set(style="whitegrid")# 1. 类别销售总额柱状图
plt.figure(figsize=(12, 6))
category_sales.plot(kind='bar', color='skyblue')
plt.title('各类别商品销售总额', fontsize=14)
plt.xlabel('商品类别', fontsize=12)
plt.ylabel('销售总额(元)', fontsize=12)
plt.xticks(rotation=45)
plt.grid(axis='y', linestyle='--', alpha=0.7)
for i, v in enumerate(category_sales):plt.text(i, v + 0.1, f'{v:.0f}', ha='center')
plt.tight_layout()
plt.savefig('category_sales.png')
plt.close()
print("已保存图表: category_sales.png")# 2. 月度销售趋势折线图
plt.figure(figsize=(12, 6))
monthly_sales.plot(kind='line', marker='o', color='#FF7F0E', linewidth=2)
plt.title('月度销售趋势', fontsize=14)
plt.xlabel('月份', fontsize=12)
plt.ylabel('销售总额(元)', fontsize=12)
plt.grid(True, linestyle='--', alpha=0.7)
plt.xticks(range(1, 13))  # 显示1-12月
for i, v in enumerate(monthly_sales):plt.text(monthly_sales.index[i], v + 0.1, f'{v:.0f}', ha='center')
plt.tight_layout()
plt.savefig('monthly_sales.png')
plt.close()
print("已保存图表: monthly_sales.png")# 3. 热销商品前10名
plt.figure(figsize=(14, 8))
ax = top_products.plot(kind='barh', color='#2CA02C')
plt.title('销量前10的商品', fontsize=14)
plt.xlabel('销售数量', fontsize=12)
plt.ylabel('商品名称', fontsize=12)
plt.grid(axis='x', linestyle='--', alpha=0.7)
# 在条形末端添加数值标签
for i, v in enumerate(top_products):plt.text(v + 0.5, i, f'{v:.0f}', va='center')
plt.tight_layout()
plt.savefig('top_products.png')
plt.close()
print("已保存图表: top_products.png")# 4. 销售员业绩饼图
plt.figure(figsize=(10, 8))
plt.pie(salesperson_performance, labels=salesperson_performance.index, autopct='%1.1f%%', startangle=90, shadow=True, explode=[0.05]*len(salesperson_performance))
plt.title('销售员业绩占比', fontsize=14)
plt.axis('equal')  # 保证饼图是圆的
plt.tight_layout()
plt.savefig('salesperson_performance.png')
plt.close()
print("已保存图表: salesperson_performance.png")# 5. 周末与工作日销售对比条形图
plt.figure(figsize=(8, 6))
colors = ['#D62728' if x else '#1F77B4' for x in weekend_vs_weekday.index]
weekend_vs_weekday.plot(kind='bar', color=colors)
plt.title('周末与工作日销售对比', fontsize=14)
plt.xlabel('是否周末', fontsize=12)
plt.ylabel('销售总额(元)', fontsize=12)
plt.xticks(ticks=[0, 1], labels=['工作日', '周末'], rotation=0)
plt.grid(axis='y', linestyle='--', alpha=0.7)
for i, v in enumerate(weekend_vs_weekday):plt.text(i, v + 0.1, f'{v:.0f}', ha='center')
plt.tight_layout()
plt.savefig('weekend_vs_weekday.png')
plt.close()
print("已保存图表: weekend_vs_weekday.png")# 6. 季度销售趋势
plt.figure(figsize=(10, 6))
quarterly_sales.plot(kind='bar', color=['#1F77B4', '#FF7F0E', '#2CA02C', '#D62728'])
plt.title('季度销售趋势', fontsize=14)
plt.xlabel('季度', fontsize=12)
plt.ylabel('销售总额(元)', fontsize=12)
plt.xticks(rotation=0)
plt.grid(axis='y', linestyle='--', alpha=0.7)
for i, v in enumerate(quarterly_sales):plt.text(i, v + 0.1, f'{v:.0f}', ha='center')
plt.tight_layout()
plt.savefig('quarterly_sales.png')
plt.close()
print("已保存图表: quarterly_sales.png")# 5. 高级分析:RFM客户分析
print("\n5. 进行RFM客户分析...")# 获取最大日期(数据集中的最后一天)
max_date = sales_df['日期'].max()# 按客户ID分组计算RFM指标
rfm = sales_df.groupby('客户ID').agg({'日期': lambda x: (max_date - x.max()).days,  # 最近购买时间(天数)'商品ID': 'count',  # 购买频率(订单数)'总金额': 'sum'  # 购买金额
})# 重命名列
rfm.columns = ['最近购买时间', '购买频率', '购买金额']# 查看RFM分析结果
print("\nRFM分析结果:")
print(rfm.head())# 对RFM指标进行分段
rfm['R分数'] = pd.qcut(rfm['最近购买时间'], 5, labels=[5, 4, 3, 2, 1])
rfm['F分数'] = pd.qcut(rfm['购买频率'].rank(method='first'), 5, labels=[1, 2, 3, 4, 5])
rfm['M分数'] = pd.qcut(rfm['购买金额'].rank(method='first'), 5, labels=[1, 2, 3, 4, 5])# 计算RFM总分
rfm['RFM_Score'] = rfm['R分数'].astype(str) + rfm['F分数'].astype(str) + rfm['M分数'].astype(str)# 识别客户类型
print("\n客户分类:")
# 定义客户类型
customer_segments = {r'^5': '近期活跃客户',r'^[45][45]': '高价值客户',r'^[45][1-3]': '高潜力客户',r'^3': '中等价值客户',r'^[12][45]': '流失高价值客户',r'^[12]': '流失低价值客户'
}# 标记客户类型
for pattern, segment in customer_segments.items():rfm[segment] = rfm['RFM_Score'].str.contains(pattern).astype(int)# 统计各类型客户数量
segment_counts = rfm.iloc[:, 7:].sum().sort_values(ascending=False)
print(segment_counts)# 可视化客户分类
plt.figure(figsize=(10, 6))
segment_counts.plot(kind='bar', color='purple')
plt.title('客户类型分布', fontsize=14)
plt.xlabel('客户类型', fontsize=12)
plt.ylabel('客户数量', fontsize=12)
plt.xticks(rotation=45)
plt.grid(axis='y', linestyle='--', alpha=0.7)
for i, v in enumerate(segment_counts):plt.text(i, v + 0.05, str(v), ha='center')
plt.tight_layout()
plt.savefig('customer_segments.png')
plt.close()
print("已保存图表: customer_segments.png")# 输出高价值客户
high_value = rfm[rfm['高价值客户'] == 1].sort_values(by='购买金额', ascending=False)
print("\n高价值客户名单:")
print(high_value[['最近购买时间', '购买频率', '购买金额', 'RFM_Score']])print("\n分析完成! 所有结果都已保存.")

运行结果如图:

在这里插入图片描述

在这段销售数据分析代码中,一共创建了7个可视化图表。这些图表系统地展示了销售数据的不同方面,让数据分析结果更加直观和易于理解。

详细图表清单

让我们逐一看看这些图表及其用途:

1.类别销售总额柱状图 (category_sales.png)

在这里插入图片描述

  • 展示不同商品类别的总销售额
  • 使用了蓝色柱状图并包含数值标签

2.月度销售趋势折线图 (monthly_sales.png)
在这里插入图片描述

  • 显示各月份销售额的变化趋势
  • 使用了橙色线条和圆形标记点

3.热销商品前10名 (top_products.png)
在这里插入图片描述

  • 用水平条形图展示销量最高的10种商品
  • 使用了绿色条形并在条形末端添加了数值标签

4.销售员业绩饼图 (salesperson_performance.png)

在这里插入图片描述

  • 展示各销售员的销售额占比
  • 使用了带阴影的饼图,各部分略微分离

5.周末与工作日销售对比条形图 (weekend_vs_weekday.png)

在这里插入图片描述

  • 比较工作日和周末的销售总额
  • 使用了不同颜色区分(蓝色表示工作日,红色表示周末)

6.季度销售趋势 (quarterly_sales.png)
在这里插入图片描述

  • 展示各季度的销售总额
  • 使用了彩色条形图,每个季度用不同颜色表示

7.客户类型分布 (customer_segments.png)
在这里插入图片描述

  • 在RFM分析部分创建
  • 展示不同类型客户的数量分布
  • 使用了紫色条形图

这些可视化图表共同构成了一个全面的销售数据分析报告,涵盖了产品、时间、人员和客户多个维度的分析视角,帮助业务人员快速理解数据中的重要模式和趋势。

六、总结与进阶学习路径

在本文中,我们学习了pandas的基础知识,包括数据结构、基本操作、数据清洗和分析方法。我们还通过销售数据分析的实例,将所学知识应用到实际问题中。

1. 今日要点

  • pandas是Python数据分析的核心库,提供了强大的数据处理功能
  • DataFrame和Series是pandas的两个核心数据结构
  • 数据清洗是数据分析的关键步骤,包括处理缺失值、异常值和数据转换
  • 数据分析涉及数据探索、统计分析和可视化
  • 通过实际案例(销售数据分析)学习数据分析的流程和方法

2. 进阶学习方向

随着对pandas的深入了解,你可以继续学习一下几个方向的内容:

在这里插入图片描述

3. 实践建议

数据分析是一项实践性很强的技能,建议:

  • 寻找真实数据集进行练习(如 Kaggle平台:https://www.kaggle.com/)

在这里插入图片描述

  • 尝试解决实际业务问题
  • 创建自己的分析项目并分享结果
  • 学习他人的分析案例和方法

七、练习题

  1. 编写代码读取一个CSV文件,并显示其基本信息和统计摘要。
  2. 使用pandas处理缺失值,尝试不同的填充方法。
  3. 对数据进行分组聚合,计算不同类别的统计量。
  4. 创建一个简单的数据可视化,展示数据的某个特征。
  5. 尝试完成一个简单的销售数据分析项目,包括数据清洗、分析和可视化。

谢谢大家阅读《Python星球日记》第20天的内容!

在下一篇文章中,我们将对前20天所学内容进行总结,为基础阶段做一次收尾。如果有任何问题,欢迎在评论区留言!

创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊)
如果你对今天的内容有任何问题,或者想分享你的学习心得,欢迎在评论区留言讨论!

http://www.dtcms.com/wzjs/398855.html

相关文章:

  • 公司简介ppt介绍范本给你一个网站怎么优化
  • 淘宝客网站做seo美国站外推广网站
  • 苏州集团网站建设清理优化大师
  • 门户网站前台页面友链外链app
  • 那个网站可以做网站测速对比跨境电商怎么开店铺
  • 做微商哪个网站有客源宁德seo推广
  • 网站的内部优化公司抖音推广怎么做
  • 如何做国外网站品牌推广思路
  • 手机网站建设的费用网站推广怎么做有效果
  • 为啥浏览做的网站有移动条如何在网上做销售推广
  • 郑州网站建设套餐seo兼职工资一般多少
  • 莆田网站建设重庆小潘seo
  • 合肥做网站可以吗百度云网盘资源搜索引擎入口
  • 广东一站式网站建设推荐怎么做一个网站平台
  • 广安网站制作设计扫描图片找原图
  • 朝阳港网站建设方案常用的关键词有哪些
  • 网站底部怎么做网站seo查询
  • 做网站和程序员哪个好点北京搜索引擎优化经理
  • 机箱做的网站主机怎么查看ftp网络营销策划方案怎么写
  • wordpress站添加根部单页打不开郑州seo外包顾问热狗
  • 广州建站外包怎样优化网络
  • 怎么网站搜索排名优化最近新闻头条最新消息
  • 深圳商业网站建设哪家泰安网站seo
  • 汕尾网站开发公司网站搭建流程
  • 新手小白如何写公众号文章seo营销软件
  • 自己的网站怎么做淘宝联盟淘宝的17种免费推广方法
  • 做网站最新技术成都sem优化
  • 武汉做网站优化公司精准客源app
  • 精美wordpress主题浙江seo关键词
  • wordpress无法编辑文章临沂seo代理商