pandas入门(三)——数据可视化


前言

善始者繁多,克终者盖寡。

数据分析大抵可以分为数据收集、数据预处理、数据分析、数据可视化四个环节,今天以某公司财务数据为例,可视化该公司的负债能力以及资金分布情况。

详细模块中含有大量print语句,主要用于观察程序运行结果;完整代码中无此项。


一、数据清洗

原始数据文件中包含大量无关数据,在绘图前需要将其处理掉。

import pandas
from matplotlib import pyplot

#步骤一:读取数据文件
数据 = pandas.read_excel("数据.xlsx",sheet_name="sheet1")
print(数据)
print(数据.columns)

#步骤二:将行列转置
行索引 = 数据.columns
列索引 = 数据["资产负债表"]
数据 = pandas.DataFrame(数据.values.T,index=行索引,columns=列索引)
print(数据)

#步骤三:删除无用的行和列
数据.drop(["资产负债表","REPORTDATE"],axis=0,inplace=True)
print(数据)
数据.dropna(axis=1,inplace=True)
print(数据)

二、偿债能力可视化

2.1 偿债能力计算

从已经清理过的数据中取出对应的列,计算公司的资产负债率以及流动比率。

'''
    步骤四:计算各季度的负债率及流动比率
    资产负债率 = 负债总额/资产总额
    流动比率 = 流动资产总额/流动负债总额
'''
print(数据.columns)
数据["资产负债率"] = 数据["负债合计"]/数据["资产总计"]
print(数据)
数据["流动比率"] = 数据["流动资产合计"]/数据["流动负债合计"]
print(数据)

2.2 偿债能力可视化

先从数据表中取出"资产负债率"、"流动比率"两列,接着祛除行标签中冗长的时间显示,最后绘制折线图。

#步骤五:取出资产负债率、流动比率两列
数据 = 数据[["资产负债率","流动比率"]]
print(数据)

#步骤六:将行索引中多余的时间去掉
新的行索引 = 数据.index.str[0:10]
数据.index = 新的行索引
print(数据)

#步骤八:调整折线图参数
#让中文汉字显示出来
pyplot.rcParams["font.sans-serif"]=["SimHei"]
pyplot.rcParams["axes.unicode_minus"] = False
#设置图片大小
pyplot.figure(figsize=(20,5))
#调整x坐标中文字旋转角度,防止字重合
pyplot.xticks(rotation=60)
#放入数据,绘制图像,此时图片并不会显示出来
pyplot.plot(数据)
#添加图例
pyplot.legend(["资产负债率","流动比率"])
#添加标题
pyplot.title("中国软件")
#设置x坐标
pyplot.xlabel("季度")
#设置y坐标
pyplot.ylabel("比率")
#显示图片
pyplot.show()

2.3 完整代码

import pandas
from matplotlib import pyplot

数据 = pandas.read_excel("数据.xlsx",sheet_name="sheet1")
行索引 = 数据.columns
列索引 = 数据["资产负债表"]
数据 = pandas.DataFrame(数据.values.T,index=行索引,columns=列索引)
数据.drop(["资产负债表","REPORTDATE"],axis=0,inplace=True)
数据.dropna(axis=1,inplace=True)

数据["资产负债率"] = 数据["负债合计"]/数据["资产总计"]
数据["流动比率"] = 数据["流动资产合计"]/数据["流动负债合计"]
数据 = 数据[["资产负债率","流动比率"]]
新的行索引 = 数据.index.str[0:10]
数据.index = 新的行索引

pyplot.rcParams["font.sans-serif"]=["SimHei"]
pyplot.rcParams["axes.unicode_minus"] = False
pyplot.figure(figsize=(20,5))
pyplot.xticks(rotation=60)
pyplot.plot(数据)
pyplot.legend(["资产负债率","流动比率"])
pyplot.title("中国软件")
pyplot.xlabel("季度")
pyplot.ylabel("比率")
pyplot.show()

2.4 效果图

效果图1

三、资产占比可视化

3.1 资产占比计算

#步骤四:取出货币资金、应收账款、存货、预付款项、固定资产、无形资产、长期待摊费用、资产总计8列
数据 = 数据[["货币资金","应收账款","存货","预付款项","固定资产","无形资产","长期待摊费用","资产总计"]]
print(数据)

#步骤五:转置
行索引 = 数据.columns
列索引 = 数据.index
数据 = pandas.DataFrame(数据.values.T,index=行索引,columns=列索引)
#祛除行索引上的名字
数据.index.name = None
print(数据)

#步骤六:计算二零年六月份各项资金占比
数据["二零年六月占比"] = 数据["2020/6/30 0:00:00"]/数据["2020/6/30 0:00:00"]["资产总计"]
二零年六月数据 = 数据["二零年六月占比"][0:7]
print(二零年六月数据)

#步骤七:计算“其他”项目占比
其他项目占比 = 1 - 二零年六月数据.sum()
二零年六月数据.loc["其他"] = 其他项目占比
print(二零年六月数据)

3.2 资金占比可视化

使用饼图显示各项目占比情况。

#步骤九:为饼图添加细节
#让中文汉字显示出来
pyplot.rcParams["font.sans-serif"]=["SimHei"]
pyplot.rcParams["axes.unicode_minus"] = False
#设置图片大小
pyplot.figure(figsize=(8,8))
#多做一步,单独列出数据
饼图数据 = 二零年六月数据.tolist()
'''
	下面这么长,其实只是一行代码,为了显示方便才分行写
	labels是对每块扇形的说明;
	autopct是每块扇形内数据的显示方式
	%3.1%%表示以百分数显示数字,数字总长度为3,其中小数占1位;
	explode用于突出显示某块扇形区域,数据个数与扇形个数对应,0表示不突出;
	starttangle用于设置饼图旋转角度防止字重合。
'''
pyplot.pie(
    饼图数据,
    labels=二零年六月数据.index,
    autopct="%3.1f%%",
    explode=(0,0,0.1,0,0,0,0,0),
    startangle=60
)
#设置饼图标题
pyplot.title("中国软件产业结构分析")
#显示图像
pyplot.show()

3.3 完整代码

import pandas
from matplotlib import pyplot

数据 = pandas.read_excel("数据.xlsx",sheet_name="sheet1")
行索引 = 数据.columns
列索引 = 数据["资产负债表"]
数据 = pandas.DataFrame(数据.values.T,index=行索引,columns=列索引)

数据.drop(["资产负债表","REPORTDATE"],axis=0,inplace=True)
数据.dropna(axis=1,inplace=True)

数据 = 数据[["货币资金","应收账款","存货","预付款项","固定资产","无形资产","长期待摊费用","资产总计"]]

行索引 = 数据.columns
列索引 = 数据.index
数据 = pandas.DataFrame(数据.values.T,index=行索引,columns=列索引)
数据.index.name = None

数据["二零年六月占比"] = 数据["2020/6/30 0:00:00"]/数据["2020/6/30 0:00:00"]["资产总计"]
二零年六月数据 = 数据["二零年六月占比"][0:7]
其他项目占比 = 1 - 二零年六月数据.sum()
二零年六月数据.loc["其他"] = 其他项目占比

pyplot.rcParams["font.sans-serif"]=["SimHei"]
pyplot.rcParams["axes.unicode_minus"] = False
pyplot.figure(figsize=(8,8))
饼图数据 = 二零年六月数据.tolist()
pyplot.pie(
    饼图数据,
    labels=二零年六月数据.index,
    autopct="%3.1f%%",
    explode=(0,0,0.1,0,0,0,0,0),
    startangle=60
)
pyplot.title("中国软件产业结构分析")
pyplot.show()

3.4 效果图

效果图2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的墨菲特

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值