数据可视化第二周

数据可视化第二周

一、时序数据和比例数据展示可用图表

在这里插入图片描述

二、离散场景和连续场景两组数据分析展示

2.1离散场景1
在这里插入图片描述
时序数据数据集1,场景某电商公司2018年销售额整体趋势情况,以及不同品类销售额的发展趋势,可用折线图。(第一次觉得用百分比堆叠图或者普通堆叠图表示较好,并列柱状图可能数据线条比较多,而且折现条数也是,用百分比堆叠图,能利用百分比堆叠图各类趋势变化,还有占比比较清楚。普通的堆叠图应该也可以,不过4个题目全看过后感觉还是用折线图试试)。

(1)点线图
在这里插入图片描述

#coding=utf-8
#小试牛刀
import  numpy  as  np
import pandas  as  pd
import  matplotlib.pyplot  as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
df = pd.read_excel(r'd:\excel\ksh02-01.xlsx',sheet_name='Sheet1')
df2 = pd.read_excel(r'd:\excel\ksh02-01.xlsx',sheet_name='Sheet2')
array = df.values

df_new = pd.DataFrame(array[:,1:],index =array[:,0] ,columns=df.columns[1:])
plt.plot(df_new['3C电子(元)'],'r-',df_new['美妆个护(元)'],'y-',df_new['食品饮料(元)'],'g.-')
plt.show()

在这里插入图片描述

#coding=utf-8
import  numpy  as  np
import pandas  as  pd
import  matplotlib.pyplot  as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
df = pd.read_excel(r'd:\excel\ksh02-01.xlsx',sheet_name='Sheet1')
df2 = pd.read_excel(r'd:\excel\ksh02-01.xlsx',sheet_name='Sheet2')
df.plot()#pandas dataframe中自带的plot绘图
plt.show()

(2)3C变化-条形图
在这里插入图片描述
如果所有的曲线均用条形图在一张图片上展示,会显的很密集,不符合分类3-4中,且总数又很多的情况。
在这里插入图片描述在这里插入图片描述
df.plot(kind=‘barh’) #绘制横向bar

df.plot(kind=‘bar’)#绘制竖向

(3)3C拟合曲线
在这里插入图片描述
虽然从数据上感觉总体3C是逐渐下降的,这里通过3次多项式拟合曲线明显感觉在下降。(前段时间关于天猫近几年销售额的预测,它是上半年或者很久前的预测,却是如此的接近,3次拟合的结果,因此你懂的)我们把月份再往后拉几个月的,可以看出如下图:
在这里插入图片描述
三次拟合多项式
f ( x ) = − 38.46 x 2 + 758.2 x 2 − 5379 x + 6.782 e + 04 f(x)= -38.46 x^2 + 758.2 x^2 - 5379 x + 6.782e^{+04} f(x)=38.46x2+758.2x25379x+6.782e+04
(4)3C产品每月变化及环比变化趋势
在这里插入图片描述
2.2离散场景2
在这里插入图片描述
场景2:某只股票在2019年10月份的价格变动,因为每日都有值,次日值,同时还有价格变动,可以用阶梯图,把变动或者波动表示出来,类似股票蜡烛图。

2.3连续场景1
在这里插入图片描述
看到数据有分类,一级时效、二级时效,还有当日揽收、次日揽收,有比例占比,因此可以用比例型,并且含有分类,可以尝试饼图,或者环形图。

2.4连续场景2
在这里插入图片描述
根据要求既要对比各公司内部不同场景下比例,同时又要比较同类业务中各公司间占比差异,因此第一个想到的就是普通堆叠柱状图,如果用百分比堆叠柱状图,有个总量的百分100%,同类业务不同公司占比可能就有些问题,不过可以试试两种方式。
在这里插入图片描述

#这里需要先在excel表中把总承运量给去掉
df = pd.read_excel(r'd:\excel\ksh02-01.xlsx',sheet_name='Sheet1')
df2 = pd.read_excel(r'd:\excel\ksh02-01.xlsx',sheet_name='Sheet2')
df2.index=df2['快递公司']
df2.plot(kind='bar',stacked=True)
plt.show()

数据:
在这里插入图片描述
在这里插入图片描述

excel sheet1 统计数据:

    3C电子(元)        美妆个护(元)  ...        家居电器(元)       总销售额(元)

1. count     12.000000      12.000000  ...      12.000000  1.200000e+01
   mean   56250.000000   85583.333333  ...  290833.333333  6.985000e+05
   std     5361.902647    8867.287515  ...  257318.632804  3.731354e+05
   min    50000.000000   70000.000000  ...   60000.000000  3.170000e+05
   25%    52750.000000   79500.000000  ...  115000.000000  4.360000e+05
   50%    55500.000000   85000.000000  ...  195000.000000  6.025000e+05
   75%    58250.000000   91750.000000  ...  370000.000000  7.942500e+05
   max    70000.000000  100000.000000  ...  895000.000000  1.582500e+06
'''
     月份  3C电子(元)  美妆个护(元)  食品饮料(元)  服装鞋帽(元)  家居电器(元)  总销售额(元)
0    1月    70000    70000    70000    70000    70000   350000
1    2月    60000    77000    60000    60000    60000   317000
2    3月    59000    78000    69000   100000   100000   406000
3    4月    58000    80000    86000   260000   260000   744000
4    5月    57000    82000    64000   240000   340000   783000
5    6月    56000    84000    60000   200000   200000   600000
6    7月    55000    86000    75000   150000   150000   516000
7    8月    54000    88000    66000   160000   460000   828000
8    9月    53000    91000    62000   120000   120000   446000
9   10月    52000    94000    79000   190000   190000   605000
10  11月    51000    97000    79500   460000   895000  1582500
11  12月    50000   100000    64500   345000   645000  1204500
:dataframe值
  快递公司   省外件  省内非同城件  省内同城件
0   顺丰  2100    1000    500
1   中通  1800     900    800
2   圆通  1900     700    700
3   申通  1700     700    700
4   韵达  1300     900    700
5  EMS  1900     600    200

参考代码python:

#coding=utf-8
import  numpy  as  np
import pandas  as  pd
import  matplotlib.pyplot  as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
df = pd.read_excel(r'd:\excel\ksh02-01.xlsx',sheet_name='Sheet1')
df2 = pd.read_excel(r'd:\excel\ksh02-01.xlsx',sheet_name='Sheet2')
#print(df.values)
array = df.values
#print(array[:,0])
#print(array[:,1:])
#print(df.columns)
df_new = pd.DataFrame(array[:,1:],index =array[:,0] ,columns=df.columns[1:])
#print(df_new)
#print(df_new['3C电子(元)'])
plt.plot(df_new['3C电子(元)'],'r-',df_new['美妆个护(元)'],'y-',df_new['食品饮料(元)'],'g.-')
plt.bar(df_new.index,df_new['3C电子(元)'],label='3C电子',color='steelblue',alpha=0.8)#plt.show()

#3次多项式拟合f1_index = np.arange(12)f1_x = np.array([70000,60000,59000,58000,57000,56000,55000,54000,53000,52000,51000,50000])

f1 = np.polyfit(f1_index,f1_x,3)
p1 = np.poly1d(f1)
#print(p1)
f1_index_x = np.arange(18)
yvals = p1(f1_index_x)

plot1 = plt.plot(f1_index,f1_x,'s',label = 'original values')
plot2 = plt.plot(f1_index_x,yvals,'r',label='polyfit values')
plt.xlabel('3C电子')plt.ylabel('销售额')
#plt.legend()
#plt.show()
'''        3         2-38.46 x + 758.2 x - 5379 x + 6.782e+04'''

#展示数据柱状图及每个月变化百分比-3C为例
f1_x1 = np.array([80000,70000,60000,59000,58000,57000,56000,55000,54000,53000,52000,51000])

percent3C = np.round((f1_x-f1_x1)/f1_x, decimals=4)
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.bar(f1_index,f1_x,alpha=.7,color='g')
ax1.set_ylabel('销售额',fontsize='10')
ax2 = ax1.twinx()
ax2.plot(f1_index,percent3C*100,'r',ms=10)
ax2.set_ylabel('环比%',fontsize='10')
#plt.show()
df_t = df_new.Tprint(df)
#coding=utf-8

import  numpy  as  np
import pandas  as  pd
import  matplotlib.pyplot  as plt

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

df = pd.read_excel(r'd:\excel\ksh02-01.xlsx',sheet_name='Sheet1')
df2 = pd.read_excel(r'd:\excel\ksh02-01.xlsx',sheet_name='Sheet2')

#df.plot()
df.plot(kind='bar')
plt.show()

import  numpy  as  np
import pandas  as  pd
import  matplotlib.pyplot  as plt

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

df2 = pd.read_excel(r'd:\excel\ksh02-01.xlsx',sheet_name='Sheet2')
#print(df.describe())
#df.plot()
print(df2)
#print(df2.index)
#df2.index=df2['快递公司']
df2.plot(kind='bar',stacked=True)
plt.show()

python pandas DataFrame绘制图片plot

参考:https://blog.csdn.net/brucewong0516/article/details/80524442

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值