新一线城市数据处理与使用plotly动态可视化
程序员文章站
2022-01-13 10:57:34
**新一线城市可视化**前言本篇文章使用2000-2020年新一线城市数据。总包含两个excel文件,一个是在“新一线城市房价数据.xlsx”;另一个是“新一线城市人口和GDP.xlsx”。(数据文末自取)。本篇博客的意义所在是学习数据分析中的数据处理和表格的合并,最重要的就是新的一种可视化库—plotly库包的使用。直奔主题–上代码# 导入包import numpy as np import pandas as pdimport plotly as py import plotly....
**
新一线城市可视化
**
前言
本篇文章使用2000-2020年新一线城市数据。总包含两个excel文件,一个是在“新一线城市房价数据.xlsx”;另一个是“新一线城市人口和GDP.xlsx”。(数据文末自取)。本篇博客的意义所在是学习数据分析中的数据处理和表格的合并,最重要的就是新的一种可视化库—plotly库包的使用。
直奔主题–上代码
# 导入包 import numpy as np import pandas as pd import plotly as py import plotly.graph_objs as go import plotly.express as px from plotly import tools
首先肯定是导入各种库包,这里主要说下plotly包,类似于pyecharts的可视化
房价数据可视化
房价走势图 - 条形图
人口增量走势图 - 条形图
GDP走势图 - 条形图
人口 Vs GDP随时间变化走势图 - 散点图
#读入数据 df_price=pd.read_excel("/home/ysc/dataFX/新一线城市/data/新一线城市房价数据.xlsx") #df_price['name'].value_counts() df_price.head()
#提取年月 df_price["dates"]=df_price["dates"].str.replace("房价",'') #提取年份 df_price["year"]=df_price["dates"].str.split("年").str[0] #price处理 df_price["price"]=df_price["price"].str.replace("元/㎡",'').astype('int') #排序 df_price=df_price.sort_values("dates") #重置索引 df_price.index=range(df_price.shape[0]) df_price.head()
#生成新表 df_price2=df_price.groupby(["name","year"])["price"].mean().reset_index() #reset_index() 重置索引 df_price2["price"]=round(df_price2["price"]) df_price2.head()
#条形图 animation_frame 帧动画 fig1 = px.bar(df_price2, x='name', y='price', color='name', text='price', title='新一线城市近10年平均房价走势图', animation_frame='year', range_y=[5000, 30000] ) fig1.update_layout(xaxis_title="城市",yaxis_title="平均价格(元/㎡)") py.offline.plot(fig1,filename="/home/ysc/dataFX/data/新一线城市近十年平均房价走势图.html")
由于是动态图,截图显示不出效果。读者可自行运行尝试操作。下图同理。
人口-GDP数据可视化
#读入数据 df_gdb=pd.read_excel("/home/ysc/dataFX/新一线城市/data/新一线城市人口和GDP.xlsx",sheet_name=0) df_pop=pd.read_excel("/home/ysc/dataFX/新一线城市/data/新一线城市人口和GDP.xlsx",sheet_name=1) print(df_gdb.shape,df_pop.shape)
输出结果:(300, 3) (300, 3)
df_all=pd.merge(left=df_gdb,right=df_pop,on=["城市","年份"]) df_all=df_all.sort_values(["城市","年份"]) df_all.index=range(df_all.shape[0]) df_all.head()
# 条形图 fig2 = px.bar(df_all, x='城市', y='GDP', color='城市', text='GDP', title='新一线城市近20年GDP变化趋势', range_y=[300, 25000], animation_frame='年份', ) fig2.update_layout(yaxis_title='GDP(亿元)') py.offline.plot(fig2, filename='2000-2019年GDP变化趋势.html')
fig3=px.scatter(df_all,x="GDP",y="人口",animation_frame="年份",animation_group="城市", size="人口",color="城市",hover_name='城市', size_max=50, text='城市', range_x=[300, 25000], range_y=[150, 4000], title='新一线城市近20年GDP和人口变化趋势', ) fig3.update_layout(xaxis_title='GDP(亿元)',yaxis_title='人口(万人)') py.offline.plot(fig3,filename="/home/ysc/dataFX/data/2000-2019年GDP和人口变化趋势.html")
人口增量数据可视化
#存储数据 df_dealed=pd.DataFrame() for i in df_all['城市'].unique(): #筛选城市、创建副本 df_sel=df_all[df_all['城市']==i].copy() #新增列 df_sel['人口增量']=df_sel['人口'].diff() #累计增量 df_sel['人口累计增量'] = df_sel['人口增量'].cumsum() #追加 df_dealed = df_dealed.append(df_sel, ignore_index=True) #删除空值 df_dealed=df_dealed.dropna() df_dealed['人口增量']=round(df_dealed['人口增量'],2) df_dealed['人口累计增量'] = round(df_dealed['人口累计增量'], 2) df_dealed.head()
#条形图 fig4=px.bar(df_dealed, x='城市', y='人口累计增量', text='人口累计增量', color='城市', title='新一线城市2000年后人口累计增量', animation_frame='年份', range_y=[0, 500] ) fig4.update_layout(xaxis_title='各大城市',yaxis_title='累计增量(万人)') py.offline.plot(fig4, filename='/home/ysc/dataFX/data/2001-2019年人口增量数据.html')
数据集 链接: https://pan.baidu.com/s/1-H4CeejJQRiGDRz1gtRLgA 提取码: i2fp
本文地址:https://blog.csdn.net/qq_33392383/article/details/108857036