在本文中使用pandas加pyecharts对云南旅游数据进行简单的数据可视化分析:
参考资料:pyecharts、pandans手册
数据集地址
#导入pandas相关的库并查看数据集情况
import pandas as pd
#from pyecharts import Bar, Line, Scatter, EffectScatter, Grid,Pie,WordCloud,Page,Style,Funnel,Liquid
#from pyecharts import configure
date=pd.read_excel("云南旅游数据(3).xlsx")
date.head()
#查看数据集情况,(每列的空值情况和数据类型)
date.info()
#查看数据值的分布
date.describe()
def status(x) :
return pd.Series([x.count(),x.min(),x.idxmin(),x.quantile(.25),x.median(),
x.quantile(.75),x.mean(),x.max(),x.idxmax(),x.mad(),x.var(),
x.std(),x.skew(),x.kurt()],index=['总数','最小值','最小值位置','25%分位数','中位数','75%分位数','均值','最大值','最大值位数','平均绝对偏差','方差','标准差','偏度','峰度'])
d1=date['点评数']
d1= pd.DataFrame(status(d1))
d1
#均值标准化
from sklearn.preprocessing import scale
X_scaled = scale(d1)
X_scaled
#最大最小标准化
from sklearn.preprocessing import MinMaxScaler
min_max_scaler = MinMaxScaler()
X_train_minmax = min_max_scaler.fit_transform(d1)
X_train_minmax
对数据中的数值型数据使用pyecharts生成词云图
from pyecharts import options as opts
from pyecharts.charts import Page, WordCloud
from pyecharts.globals import SymbolType
a=date['供应商']
a=a.value_counts()
#a[0:]
a=dict(a)
name=pd.DataFrame(a.keys())
value=pd.DataFrame(a.values())
name=name[0].tolist()
value=value[0].tolist()
words=list(zip(list(name),list(value)))
word=WordCloud()
word.add("",words,word_size_range=[20, 200],)
word.set_global_opts(title_opts=opts.TitleOpts(title="WordCloud-shape-diamond"))
word.render_notebook()
word.render_notebook()
from pyecharts import options as opts
from pyecharts.charts import Page, Pie
date['服务保障'].unique()
b=date['服务保障']
b=b.value_counts()
b=dict(b)
name=pd.DataFrame(b.keys())
value=pd.DataFrame(b.values())
name=name[0].tolist()
value=value[0].tolist()
words=list(zip(list(name),list(value)))
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Page, Pie
h=list(zip( list(b.keys()),list(b.values())))
pie = Pie()
pie.add("",words)
pie.set_global_opts(title_opts=opts.TitleOpts(title="Pie-基本示例"))
pie.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
pie.render_notebook()
c=date['目的地']
#修改行索引
c=c.value_counts()
c.rename(index={'云南昆明+大理+丽江6日5晚跟团游·【千人出游】9元购手环 蝴蝶之梦+国际5星':'昆明+大理+丽江'}, inplace = True)
#c.columns
c=dict(c)
name=pd.DataFrame(c.keys())
value=pd.DataFrame(c.values())
name=name[0].tolist()
value=value[0].tolist()
#words=list(zip(list(name),list(value)))
from pyecharts.charts import Bar
bar = Bar()
bar.add_xaxis(name)
bar.add_yaxis("目的地人数",value)
#bar.DataZoomOpts(is_show=True)
# render 会生成本地 HTML 文件,默认会在当前目录生成 render.html 文件
# 也可以传入路径参数,如 bar.render("mycharts.html")
bar.render_notebook()
其他更多 图表请参考pyecharts的官网
在这里要注意的时候在pyecharts中,传入数据的时候一定要是列表类型,因为现在pyecharts已经失去了对pandas中dataframe数据类型的支持,我们可以使用以下代码将pandas转化为字典在转化为列表然后再作图
c=date['目的地']
#修改行索引
c=c.value_counts()
c.rename(index={'云南昆明+大理+丽江6日5晚跟团游·【千人出游】9元购手环 蝴蝶之梦+国际5星':'昆明+大理+丽江'}, inplace = True)
#c.columns
c=dict(c)
name=pd.DataFrame(c.keys())
value=pd.DataFrame(c.values())
name=name[0].tolist()
value=value[0].tolist()