echarts-数据可视化大屏展示
Posted TIME0101
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了echarts-数据可视化大屏展示相关的知识,希望对你有一定的参考价值。
echarts-数据可视化大屏展示
python-pandas-echarts-flask
新手入门,还请指教。
1 数据预处理
此部分使用jupyter
2.1.1导入包pandas包
import pandas as pd
2.1.2读取文件
(1)使用pandas读取导入6个数据文件。
data_1 = pd.read_csv('data\\cata_6008_1.csv')
data_2 = pd.read_csv('data\\cata_6008_2.csv')
data_3 = pd.read_csv('data\\cata_6008_3.csv')
data_4 = pd.read_csv('data\\cata_6008_4.csv')
data_5 = pd.read_csv('data\\cata_6008_5.csv')
data_6 = pd.read_csv('data\\cata_6008_6.csv')
(2)查看数据导入是否正确,输出前三行。
#输出前3行检查是否读取正确
data_1.head(3)
2.1.3删除每一个文件里的主键ID列,1且合并6个文件。
用iloc获取所有行,去除最后一列;并使用concat合并6个文件。
all_data = pd.concat((data_1.iloc[:, 0:-1],data_2.iloc[:, 0:-1],data_3.iloc[:, 0:-1],
data_4.iloc[:, 0:-1],data_5.iloc[:, 0:-1],data_6.iloc[:, 0:-1]))
all_data
2.1.4在每个文件里创建商品销量和销售额两列, 即增加两列“商品销量”和“销售额”,并可先设值为NaN。
直接将空值赋给列“商品销量”和“销售额”列,即可增加两列。
all_data['商品销量'] = "NaN"
all_data['销售额'] = "NaN"
all_data
2.1.5删除所有采价地为浙江省的数据行。
#查询浙江省的数据
#all_data[all_data['商品采价地区名称'].isin(['浙江省'])]
#用“~”选取不包含‘浙江省’的数据
all_data=all_data[~all_data['商品采价地区名称'].isin(['浙江省'])]
#再次查询浙江省
all_data[all_data['商品采价地区名称'].isin(['浙江省'])]
已无浙江省数据
2.1.6填充“商品销量”和“销售额”列。
思想:判断数据文件整合后的长度,假设长度为n,以这个长度数据为基准,采用python里的随机数生成方法,生成n个数据,这n个数据作为“商品销量”列的数据。“销售额”列的数据为商品价格和商品销量列的乘积。
(1)查看所有行,即用shape查看形状,可以看到有25641行。
all_data.shape
引用numpy包的random方法来生成随机数并存为列表
import numpy as np
indata= np.random.randint(0,10000,25641)
indata
(2)赋值并查看所有数据,商品销量已经被随机数数组填充。
all_data["商品销量"] = indata
all_data
(3)直接将价格,销量两列相乘即可得到销售额的值。
all_data['销售额'] = all_data['商品价格']*all_data['商品销量']
all_data
2.1.7,将商品主键替换为商品1,2,3。。。,
先将商品主键与新商品主键生成字典进行一一对应,再利用字典替换。
准备期末考试中,间断持续更新,代码解析持续完善中。。。。。
关注公众号: 我是TIME0101
回复:浙江省农产品数据可视化
可获取源码
2可视化部分
此部分使用pycharm
2.1query.py
from flask import Flask, request, render_template
from getdata import get_data
app = Flask(__name__)
@app.route('/query', methods=['GET', 'POST'])
def query():
if request.method == 'POST':
urban = request.form.get('urban')
goods = request.form.get('goods')
dict_return = get_data(urban, goods)
return render_template('query.html', dict_return = dict_return)
else:
dict_return = get_data('杭州市','商品1')
return render_template('query.html', dict_return = dict_return)
if __name__ == '__main__':
app.run(port=4500,debug = True)
2.2get_data模块
import datetime
import pandas as pd
def read_urban(urban):
urban = pd.read_csv('data/' + urban + '.txt', sep="\\t")
return urban
def get_data(urban, goods):
dict_return = {} # 存放需要的数据
#获取城市并返回当前城市
dict_return['urban'] = urban
#地图
dict_return['city_highlight'] = [{"name": urban, "selected": "true"}]
#数据初步整理
data_1 = read_urban(urban) # 通过城市返回城市列表
data_2 = data_1[data_1['商品主键'] == goods] # 通过商品获取某一类商品数据
data_goods = data_2.sort_values(by='商品采价日期') # 按照日期正序排列数据
# 柱状XY时间销量、折线XY时间价格、气泡XY时间销量、饼图XY年销售额
time_x = data_goods['商品采价日期'] # 获取日期
sale_n_y = data_goods['商品销量'] # 获取销量
price_y = data_goods['商品价格']
all_price_y = data_goods['销售额']
#滚动表
data_list = data_2.copy(deep=True)
num = []
n = data_list.shape[0]
for i in range(1, n):
num.append(str(i))
dict_return['diff_list'] = [ {'Ranking': item[0], '商品主键': item[1], '商品价格': item[2],
'商品采价日期': item[3], '商品销量': item[4],'销售额': item[5]}
for item in list(zip(num, data_list['商品主键'], data_list['商品价格'],
data_list['商品采价日期'], data_list['商品销量'],data_list['销售额']))] # 将数据制作成滚动图需要的数据格式
print(dict_return['diff_list'])
#饼图数据
data_year = data_goods.copy(deep=True)
data_year['商品采价日期'] = pd.to_datetime(data_year['商品采价日期'])
data_year['商品采价日期'] = data_year['商品采价日期'].apply(lambda x:datetime.datetime.strftime(x,'%Y'))
data_year = data_year.groupby([ '商品采价日期'],as_index=False).sum() # print(data_goods)
sale_Y_x = data_year['商品采价日期']
sale_Y_y = data_year['销售额']
dict_return['diff'] = [{"name": item[0], "value": item[1]} for item in
list(zip(sale_Y_x, sale_Y_y))] # 将数据制作成柱饼图需要的数据格式
#雷达
data_Month = data_goods.copy(deep=True)
data_Month['商品采价日期'] = pd.to_datetime(data_Month['商品采价日期'])
data_Month['商品采价日期'] = data_Month['商品采价日期'].apply(lambda x: datetime.datetime.strftime(x, '%m'))
data_Month = data_Month.groupby(['商品采价日期'], as_index=False).sum()
sale_M_y = data_Month['销售额']
money = []
for item in sale_M_y:
money.append(int(item))
dict_return['diff_l'] = {"name": '月份销售总额', "value": money}
#数据终处理
time_x = list(time_x)
sale_n_y = list(sale_n_y)
price_y = list(price_y)
all_price_y = list(all_price_y)
dict_return['time_x'] = time_x
dict_return['sale_n_y'] = sale_n_y
dict_return['price_y'] = price_y
dict_return['all_price_y'] = all_price_y
return dict_return
#get_data('杭州市', '商品1')
2.3html
代码过长,公众号可获取。
准备考试,持续更新,代码解析持续完善中。。。。。
关注公众号: 我是TIME0101
回复:浙江省农产品数据可视化
可获取源码
以上是关于echarts-数据可视化大屏展示的主要内容,如果未能解决你的问题,请参考以下文章
基于Echarts+HTML5可视化数据大屏展示—Echart图例使用