前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python可视化分析笔记(数据源准备和简单可视化)

Python可视化分析笔记(数据源准备和简单可视化)

作者头像
python与大数据分析
发布2022-03-11 13:24:20
8310
发布2022-03-11 13:24:20
举报
文章被收录于专栏:python与大数据分析

可视化是数据分析的重要一环,也是python比较擅长的工作,本笔记系列尽可能采用统一的数据源和基于matplotlib原生版本进行可视化。

数据源是从国家统计局网站上下载的2000年-2017年的全国各省、直辖市、自治区的GDP数据和人口统计数据,2018年的数据尚未公布,不过网上已公布,可作为后续机器学习预测的比对目标;数据源采用csv格式。

本笔记是基于pandas进行数据读取的,因此也简单的总结了一下pandas的一些常规操作,比如文件读取、数据显示、数据分布、数据列名的展示,数据的分组和统计,数据的排序,行列数据的汇总,以及行列的转换。

其次本文简单演示了一下如何展示行数据和列数据,以及如何展示多列数据。

本系列的最终目标是通过GDP和人口统计数据集来演示matplotlib的各种主要图表。

代码示例

代码语言:javascript
复制
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
#--------------------------获取相关数据------------------------
#从国家统计局下载2000年-2017年GDP数据和人口数据
#打开GDP数据文件,并输出其前五行,各列数据分布、各列名
'''
df=pd.read_csv('GDP.csv', encoding = "gbk")
print(df.head())
print(df.describe())
print(list(df.columns.values))
'''
#打开人口数据文件,并输出其前五行,各列数据分布、各列名
df=pd.read_csv('population.csv', encoding = "gbk",index_col=1)
print(df.head())
print(df.describe())
#-----------以下为六种列名打印方法,均以数组形式返回------------
print([column for column in df])
print(list(df))
print(list(df.columns))
print(list(df.columns.values))
print(list(df.columns.tolist()))
print([i for i in df.columns if i not in ['区域', '地区']])
#------------------dataframe进行groupby分组----------------------
#对个别维度进行分组统计
print(df.groupby('区域').sum())
#对多个维度进行分组统计
print(df.groupby(['区域','地区']).mean())
#对多个指标按照不同规则进行分组统计
print(df.groupby('区域').agg({'2017年':[np.mean, 'sum'],
                            '2016年':['count',np.std],
                            '2015年':[np.average,np.max,np.min,np.std,np.sum],
                            '2014年':['count','min', 'mean', 'max'],
                            '2013年':['min',np.min,'max',np.max]}))
#------------------datafame增加新列或新行----------------------
#新增一列汇总列,对同行数据进行汇总
#由于前两列是非数字列,所以要从第三列开始统计2017年~2000年的数字
#df['total'] = df.apply(lambda x: x.sum(), axis=1)
df['total'] = df.apply(lambda x: x[2:].sum(), axis=1)
#新增一行,对同一列数据进行汇总
#df.loc['row_total'] = df.apply(lambda x: x.sum())
#---------------------dataframe排序-----------------------------
#Dataframe排序,但不影响实际存储值
df.sort_values(by="total",ascending= False)
print(df.sort_values(by="total",ascending= False))
#-------------------dataframe行列转换---------------------------
df2=df.stack()
print(df2)
#-------------------dataframe简单画图----------------------------
matplotlib.rcParams['font.sans-serif']=['SimHei']   # 用黑体显示中文
matplotlib.rcParams['axes.unicode_minus']=False     # 正常显示负号
#对某列数据画图
#df['2017年'].plot()
#对索引行数据画图,时间是倒序的,为了体现社会主义优越性,只好把行转置一下顺序
#df.loc['北京市'][2:19].plot()
#df.loc['北京市'][18:2:-1].plot()
#plt.show()
fig=plt.figure()
#取2010年和2017年的列数据作图
ax=fig.add_subplot(3,1,1)
ax.plot(df['2017年'].values)
ax.plot(df['2000年'].values)
#取2010年到2017年的列数据作图
ax1=fig.add_subplot(3,1,2)
colname=[i for i in df.columns if i not in ['区域', '地区','total']]
for i in colname:
    ax1.plot(df[i].values)
#取北京市2010年到2017年的行数据作图,并且倒排序
ax2=fig.add_subplot(3,1,3)
ax2.plot(df.loc['北京市'][18:2:-1])
plt.xticks(rotation=90)
plt.show()
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python与大数据分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 代码示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档