python --execl信息(价格/销量/产地)图像化(三)

目录

(1)设置价格的直方图,分析价格分布情况(运用 hist() 函数生成直方图)

(2)销量分布情况

(3)不同价格区间的商品平均销量

(4)价格对销量的影响(subplots() scatter())

(5)价格对销售额的影响分析 -regplot() 

(6)不同省份的商品数量分布--value_counts()  plot()

(7)不同城市的商品数量分布(新增点: 1.网格显示  2.显示value_counts()统计的前几位)

(8)不同省份的商品平均销量分布【函数pivot_table()】

(9)不同城市的商品平均销量分布


execl表如下:

 读取 execl

# 获取execl需要的列的数据
def execl_get():
    datatmsp = pd.read_csv('/Users/mac/Documents/study23/ios_auto/test_case/nh_info.csv')  # 读取爬取的数据
    # 删除重复行:
    datatmsp = datatmsp.drop_duplicates()
    return datatmsp


# 将execl数据转化成list
def excel_list(arg):
    datatmsp = execl_get()
    data = datatmsp[['标题', '价格', '销量', '省', '市']]
    data.head()  # 默认查看前5行数据
    arg_list = datatmsp[arg].values.tolist()
    return arg_list

库的导入

import matplotlib
matplotlib.use('Qt5Agg')
import matplotlib.pyplot as plt

(1)设置价格的直方图,分析价格分布情况(运用 hist() 函数生成直方图)

# 价格分布情况的解析(直方图)
def price_distribution():
    data1 = excel_list('价格')
    plt.rcParams['font.sans-serif'] = ['Songti SC']  # 用来正常显示中文标签(macO系统))
    plt.figure(figsize=(10, 6))
    bins = range(0, 200, 20)  # 0~20,间隔 20
    nums, bins, patches = plt.hist(data1, bins, edgecolor='k')
    plt.xticks(bins, bins)
    for num, bin in zip(nums, bins):
        plt.annotate(num, xy=(bin, num), xytext=(bin + 1.5, num + 0.5))
    plt.xlabel('价格')  # x轴坐标名
    plt.ylabel('商品数量')
    plt.title(u'价格分布直方图')
    plt.show()

 生成的直方图如下:

(2)销量分布情况

def sale_distribution():
    data = excel_list('销量')
    plt.rcParams['font.sans-serif'] = ['Songti SC']  # 用来正常显示中文标签(macO系统))
    plt.figure(figsize=(10, 6))
    bins = range(20000, 110000, 10000)  # 0~30000,间隔 10000
    nums, bins, patches = plt.hist(data, bins, edgecolor='k')
    plt.xticks(bins, bins)
    for num, bin in zip(nums, bins):
        plt.annotate(num, xy=(bin, num), xytext=(bin + 1.5, num + 0.5))
    plt.xlabel('销量')  # x轴坐标名
    plt.ylabel('商品数量')
    plt.title(u'销量分布情况')
    plt.show()

(3)不同价格区间的商品平均销量

先获取多列数据

# 获取execl多列并生成list和索引
def more_list(arg1, arg2, index1, index2):  # arg获取的是execel列,index是生成列表后的索引
    datatmsp = execl_get()
    data = datatmsp[[arg1, arg2]]
    arg_list = data.values.tolist()
    df = pd.DataFrame(arg_list, columns=[index1, index2])
    return df

代码如下:均值函数mean()

# 不同价格区间的平均销量
def price_sale():
    data = more_list('价格', '销量', 'prices', 'sales')
    # print(data)
    # 用 qcut 函数将price列分为12组,且命名为group
    data['group'] = pd.qcut(data.prices, 12)
    data.group.value_counts().reset_index()  # 生成数据框并重设索引

    # 以group列进行分类求sales的均值mean():
    sale_group = data[['sales', 'group']].groupby('group').mean().reset_index()
    # 绘柱形图:
    index = np.arange(sale_group.group.size)
    plt.figure(figsize=(8, 4))
    plt.rcParams['font.sans-serif'] = ['Songti SC']  # 用来正常显示中文标签(macO系统))
    # colors = ['aquamarine', 'blue', 'goldenrod', 'hotpink', 'indigo']
    plt.bar(index, sale_group.sales, color='indigo')
    plt.xticks(index, sale_group.group, fontsize=8, rotation=20)
    plt.xlabel('价格区间')
    plt.ylabel('销量')
    plt.title(u'不同价格区间的商品的平均销量')
    plt.savefig('price_sale.png', dpi=600)  # 保存为图片
    plt.show()

运行图像如下:

(4)价格对销量的影响(subplots() scatter())

def price_influence_sale():
    data = more_list('价格', '销量', 'prices', 'sales')
    fig, ax = plt.subplots(figsize=(8, 5))
    ax.scatter(data['prices'], data['sales'])
    ax.set_xlabel('价格')
    ax.set_ylabel('销量')
    ax.set_title('商品价格对销量的影响', fontsize=14)
    plt.show()

(5)价格对销售额的影响分析 -regplot() 

import seaborn as sns

# 价格对销售额的影响分析
def p_i_amount():
    data = more_list('价格', '销量', 'prices', 'sales')
    data['GMV'] = data['prices'] * data['sales']
    sns.regplot(x="prices", y='GMV', data=data, color='purple')
    plt.xlabel('价格')
    plt.ylabel('销售额')
    plt.savefig('p_i_amount.png', dpi=600)  # 保存为图片
    plt.show()

(6)不同省份的商品数量分布--value_counts()  plot()

# 不同省份的商品数量分布
def province_goods():
    data = excel_list('省')
    df = pd.DataFrame(data, columns=['provinces'])  # 设置列名
    plt.figure(figsize=(8, 4))
    # df['provinces'].value_counts().plot(kind='bar', color='goldenrod')
    plt.xticks(rotation=0)
    # 设置显示的 bar个数
    view_num = df['provinces'].value_counts().sort_values(ascending=False).head(15)
    # alpha透明度
    view_num.plot(kind='bar', color='goldenrod', alpha=0.8)
    plt.xlabel('省份')
    plt.ylabel('商品数量')
    plt.title('不同省份的商品数量分布')
    plt.savefig('pro_goods.png', dpi=600)  # 保存为图片
    plt.show()

(7)不同城市的商品数量分布(新增点: 1.网格显示  2.显示value_counts()统计的前几位)

# 不同城市的商品数量分布
def city_goods():
    data = excel_list('市')
    df = pd.DataFrame(data, columns=['city'])  # 设置列名
    plt.figure(figsize=(8, 4))  # 画布
    # 设置显示的 bar个数
    view_num = df['city'].value_counts().sort_values(ascending=False).head(15)
    # alpha透明度
    view_num.plot(kind='bar', color='goldenrod', alpha=0.8)
    plt.xticks(rotation=0)
    plt.grid(True)  # 打开网格
    plt.xlabel('城市')
    plt.ylabel('商品数量')
    plt.title('不同城市的商品数量分布')
    plt.savefig('city_goods.png', dpi=600)  # 保存为图片
    plt.show()

(8)不同省份的商品平均销量分布【函数pivot_table()】

# 不同省份的平均销量分布
def provinces_sales():
    data = execl_get()
    pro_sales = data.pivot_table(index='省', values='销量', aggfunc=np.mean)  # 分类求均值
    pro_sales.sort_values('销量', inplace=True, ascending=False)  # 排序
    pro_sales = pro_sales.reset_index()  # 重设索引
    # pro_sales = pro_sales.reset_index().head(20)  # 重设索引。取最前面的 20条数据
    index = np.arange(pro_sales['销量'].size)
    plt.figure(figsize=(8, 4))
    plt.bar(index, pro_sales['销量'], color='indigo')
    plt.xticks(index, pro_sales['省'], fontsize=11, rotation=0)
    plt.grid(True)  # 打开网格
    plt.xlabel('省份')
    plt.ylabel('平均销量')
    plt.title('不同省份的商品平均销量分布')
    plt.savefig('pro_sales.png', dpi=600)  # 保存为图片
    plt.show()

    # pro_sales.to_excel('pro_sales.xlsx', index=False)  # 导出数据 并绘制热力型地图

(9)不同城市的商品平均销量分布

data = execl_get()
pro_sales = data.pivot_table(index='市', values='销量', aggfunc=np.mean)  # 分类求均值
pro_sales.sort_values('销量', inplace=True, ascending=False)  # 排序
pro_sales = pro_sales.reset_index().head(20)  # 重设索引。取排行最前面的20个
# 不同城市的平均销量分布
def citys_sales():
    data = execl_get()
    pro_sales = data.pivot_table(index='市', values='销量', aggfunc=np.mean)  # 分类求均值
    pro_sales.sort_values('销量', inplace=True, ascending=False)  # 排序
    pro_sales = pro_sales.reset_index().head(20)  # 重设索引。取排行最前面的20个
    index = np.arange(pro_sales['销量'].size)
    plt.figure(figsize=(8, 4))
    plt.bar(index, pro_sales['销量'], color='indigo')
    plt.xticks(index, pro_sales['市'], fontsize=11, rotation=0)
    plt.grid(True)  # 打开网格
    plt.xlabel('城市')
    plt.ylabel('平均销量')
    plt.title('不同城市的商品平均销量分布')
    plt.savefig('city_sales.png', dpi=600)  # 保存为图片
    plt.show()

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值