分享

Python的利器Pandas库:超级简单的数据可视化作图,你知道吗?

 excel05 2022-04-23

1 说明:

=====

1.1 Pandas

1.1.1 已经成为最受欢迎的数据科学库之一。

1.1.2 它易于使用,文档非常棒,而且功能强大。

1.1.3 是python的一个利器,一个非常强大的数据分析工具包。

1.1.4 pandas也集成了数据可视化的功能,其数据可视化已经可以满足我们大部分的要求了,也就省下了我们很多自己使用 如 matplotlib 来数据可视化的工作。

======

1.2 我最近一直介绍各种各样的python的数据可视化作图,有静态的,也有动态交互式的,有个条友说他曾经折腾来折腾去还是回到matplotlib,我的介绍技术文章,尽量通俗易懂,我的代码拿来就可以使用,省去大家很多时间。

1.3 今天,就来介绍一个更简单的python的数据可视化静态作图,就是pandas的内置plot法(其实就是内置了matplotlib)。

1.4 顺带复习python和pandas等的基础知识,代码注释里有详细讲解,注意这是讲解学习版。

文章图片1

python数据可视化:由繁入简

2 准备:

=====

2.1 官网:

https://pandas.pydata.org/https://www.yiibai.com/pandas/python_pandas_visualization.html

2.2 安装:

pip install pandas#推荐国内源安装,本机如下sudo pip3.8 install -i https://mirrors.aliyun.com/pypi/simple pandas

2.3 查看版本:

import pandaspandas.__version__
文章图片2

2.4 环境:

华为笔记本电脑、深度deepin-linux操作系统、python3.8和微软vscode编辑器。

2.5 资料来源:

2.5.1 代码:

import pandas as pdhelp(pd.DataFrame.plot)

2.5.2 图:

文章图片3

2.5.3 对英文的文档进行代码提炼、修改、注释,便于大家拿来就能使用。

3 pandas内置plot作图:

================

3.1 通常使用 pandas 进行下列的图形的快速绘图:

=======================

'line’

'bar’ or 'barh’ for bar plots

'hist’ for histogram

'box’ for boxplot

'area’ for area plots

'scatter’ for scatter plots

'pie’ for pie plots

=====================

3.2 line折线图:

3.2.1 代码:

#导出模块import pandas as pd#数据源,2组数据d = {'col1': [2,1,3,5,3], 'col2': [3,4,1,5,2] }#df = pd.DataFrame(data=d) #默认x轴坐标轴的标签#指定x坐标轴的标签:index定义df = pd.DataFrame(data=d,index=['a', 'b', 'c', 'd','e']) #只显示col1的这条折线line#df = pd.DataFrame(data=d,index=['a', 'b', 'c', 'd','e'],columns=['col1'])#df.plot() #默认是plot.linedf.plot.line() #下面这么放,是区别平时我们看到以matplotlib作图为主的代码不同#虽然pandas的内置plot是matplotlib,但是仍需要下面2种方法使其图片显示出来#方法一#import matplotlib.pyplot as plt#plt.show()#方法二import matplotlib.pylab as plpl.show()

3.2.2 图:

文章图片4

3.3 bar柱状图:垂直柱状图

3.3.1 代码:

#导出模块import pandas as pd#数据源,2组数据d = {'col1': [2,1,3,5,3],      'col2': [3,4,1,5,2]    }#指定x坐标轴的标签:index定义df = pd.DataFrame(data=d,index=['dog', 'pig', 'cow', 'sheep','horse'],) #默认显示2组#df = pd.DataFrame(data=d,columns=['col1', 'col2']) #df = pd.DataFrame(data=d,) #等同上面#subplots=True,分子图显示,2组就分2个子图#df.plot.bar(subplots=True) #比matplotlib超级简单df.plot.bar() #默认是一张图显示2组#在这样放一次import matplotlib.pyplot as pltplt.show()

3.3.2 图:

文章图片5

bar==默认是vertical bar plot==垂直柱状图

3.4 barh水平柱状图:

3.4.1 代码:

#导出模块import pandas as pdimport matplotlib.pyplot as plt'''#数据源:方法一d = {'a': [2,1,3,5,3], 'b': [3,4,1,5,2], 'c': [1,2,4,2,2] }#指定x坐标轴的标签:index定义df = pd.DataFrame(data=d,index=['dog', 'pig', 'cow', 'sheep','horse']) '''#方法二:df = pd.DataFrame( {'a': [2,1,3,5,3], 'b': [3,4,1,5,2], 'c': [1,2,4,2,2], }, index=['dog', 'pig', 'cow', 'sheep','horse'])#启动pandas的df的plot的barh图df.plot.barh() #barh==horizontal bar plot==水平柱状图#图片展示plt.show()

3.4.2 图:

文章图片6

3.5 box箱式图:

3.5.1 代码:

#导出模块import pandas as pdimport matplotlib.pyplot as plt#方法一d= {'a': [2,1,3,5,3,3,4,1,5,2],      'b': [3,4,1,5,2,1,2,4,2,2],     'c': [1,2,4,2,2,3,1,5,3,4],     'd': [3,1,5,3,4,2,1,3,5,3],}df=pd.DataFrame(data=d,)'''#建议数据大于4组10列df = pd.DataFrame(   {'a': [2,1,3,5,3,3,4,1,5,2],      'b': [3,4,1,5,2,1,2,4,2,2],     'c': [1,2,4,2,2,3,1,5,3,4],     'd': [3,1,5,3,4,2,1,3,5,3],   #},columns=list('abcd'))  #注意已经有abcd了,所以columns=list('abcd')不需要   }) #等同于上面'''#ax = df.plot.box()df.plot.box() #等于上面,box=箱式图#图片展示plt.show()

3.5.2 图:

文章图片7

3.6 stackedbar垂直堆砌柱状图:

3.6.1 代码:

#导出模块import pandas as pdimport matplotlib.pyplot as plt#数据d= {'a': [2,1,3,5,3,3,4,1,5,2], 'b': [3,4,1,5,2,1,2,4,2,2], 'c': [1,2,4,2,2,3,1,5,3,4], 'd': [3,1,5,3,4,2,1,3,5,3],}#注意:index是x坐标轴的标签,注意list('ABCDEFGHIJ')=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']'''#插入知识点:复习一下aaa=list('ABCDEFGHIJ')df=pd.DataFrame(data=d,index=aaa)#print(aaa)#['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']'''df=pd.DataFrame(data=d,index=list('ABCDEFGHIJ')) #等同于上面#注意bar是柱状图,括号里定义stacked=True就是垂直堆砌柱状图#默认stacked=False,不是堆砌柱状图,图标的标题名df.plot.bar(stacked=True,title='pd_plot_stacked_bar') #图片展示plt.show()

3.6.2 图:

文章图片8

===高级一点===

4 area面积图:

==========

4.1 代码:

#导出模块import pandas as pdimport matplotlib.pyplot as plt#数据df = pd.DataFrame({   'sales': [3, 2, 3, 9, 10, 6],   'signups': [5, 5, 6, 12, 14, 13],   'visits': [20, 42, 28, 62, 81, 50], }, #index=pd.date_range(start='2018/01/01', end='2018/07/01',freq='M',) ,#这样报错,报中文设置错误#index=pd.date_range(start='1M', end='7M',freq='M',) ,#这样报错index=['1M','2M','3M','4M','5M','6M'],  #本机这样没有报错#index=['1月','2M','3M','4M','5M','6M'],  #本机这样没有报错)#ax = df.plot.area()#df.plot.area()df.plot.area(stacked=True,) #默认是True#df.plot.area(stacked=False) #如果数据差别比较大,建议不要堆砌plt.show()

4.2 图:

文章图片9

4.3 解决中文办法,代码,推荐这种办法,自己解决中文字体问题:

#导出模块import pandas as pdimport matplotlib.pyplot as plt#导出通用字体设置from matplotlib import font_manager #定义引出字体模块、位置、大小,字体在根目录下,华文仿宋.ttf自己下载的中文字体my_font = font_manager.FontProperties(fname='hwfs.ttf',size=10)#定义x坐标轴的文字列表,python3中不要求加u,加u也没事xtick_labels=[u'1月','2月','3月','4月','5月','6月']df = pd.DataFrame({ 'sales': [3, 2, 3, 9, 10, 6], 'signups': [5, 5, 6, 12, 14, 13], 'visits': [20, 42, 28, 62, 81, 50], }, #index=pd.date_range(start='2018/01/01', end='2018/07/01',freq='M',) ,#这样报错,报中文设置错误index=xtick_labels,)df.plot.area()#默认的x坐标刻度位置列表x=[1,2,3,4,5,6]plt.xticks(x,xtick_labels,fontproperties=my_font)plt.show()

4.4 图:解决中文字体,则需要调用matplotlib的作图法,调动函数

文章图片10

4.5 官方代码、效果图和问题分析:

文章图片11
#index=pd.date_range(start='2018/01/01', end='2018/07/01',freq='M',)#print(index)'''DatetimeIndex(['2018-01-31', '2018-02-28', '2018-03-31', '2018-04-30',               '2018-05-31', '2018-06-30'],              dtype='datetime64[ns]', freq='M')'''#报错原因,我暂时无法解决'''/usr/local/python3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:214: RuntimeWarning: Glyph 26376 missing from current font.  font.set_text(s, 0.0, flags=flags)/usr/local/python3.8/lib/python3.8/site-packages/matplotlib/backends/backend_agg.py:183: RuntimeWarning: Glyph 26376 missing from current font.  font.set_text(s, 0, flags=flags)'''

5 饼状图pie:

========

5.1 代码:

#导出模块import pandas as pdimport matplotlib.pyplot as pltdf = pd.DataFrame( {'mass': [0.330, 4.87 , 5.97], 'radius': [2439.7, 6051.8, 6378.1] }, index=['Mercury', 'Venus', 'Earth'] )#y='mass',相当于饼图的标题名,位于y轴#plot = df.plot.pie(y='mass', figsize=(5, 5))#df.plot.pie(y='mass', figsize=(5, 5)) #只显示mass的饼状图df.plot.pie(subplots=True, figsize=(5, 5)) #显示mass和radius的两个子图的饼状图#subplots=True,默认是Falseplt.show()

5.2 图:

文章图片12

6 散点图Scatter:

============

6.1 代码:

#导出模块import pandas as pdimport matplotlib.pyplot as pltdf = pd.DataFrame(    [[5.1, 3.5, 0], [4.9, 3.0, 0], [7.0, 3.2, 1],[6.4, 3.2, 1], [5.9, 3.0, 2]],    columns=['length', 'width', 'species']    )#经典Scatter散点图#只能显示2组数据,将x和y轴的25份数据进行类似x和y的作图ax1 = df.plot.scatter(x='length',y='width',c='red')   '''#高级散点图,省略,仅仅给代码ax2 = df.plot.scatter(x='length',                      y='width',                      c='species',                      colormap='viridis')'''plt.show()

6.2 图:

文章图片13

7 小结:

静态图其实也很重要,在平时的绝大多数人的多数工作中,基本上都是用到静态图,适合学生、老师、工作人员,所以今天重点将pandas的基本绘图法,超级简单,比matplotlib还简单。

其实就是pandas内置matplotlib,调出作图。

===自己整理并分享出来===

喜欢的就点赞、评论、关注、转发和收藏。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多