快捷搜索:  汽车  科技

python pandas画图(超级简单的数据可视化作图)

python pandas画图(超级简单的数据可视化作图)1.2 我最近一直介绍各种各样的python的数据可视化作图,有静态的,也有动态交互式的,有个条友说他曾经折腾来折腾去还是回到matplotlib,我的介绍技术文章,尽量通俗易懂,我的代码拿来就可以使用,省去大家很多时间。======1.1.2 它易于使用,文档非常棒,而且功能强大。1.1.3 是python的一个利器,一个非常强大的数据分析工具包。1.1.4 pandas也集成了数据可视化的功能,其数据可视化已经可以满足我们大部分的要求了,也就省下了我们很多自己使用 如 matplotlib 来数据可视化的工作。

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等的基础知识,代码注释里有详细讲解,注意这是讲解学习版。

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 pandas pandas.__version__

python pandas画图(超级简单的数据可视化作图)(2)

2.4 环境:

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

2.5 资料来源:

2.5.1 代码:

import pandas as pd help(pd.DataFrame.plot)

2.5.2 图:

python pandas画图(超级简单的数据可视化作图)(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.line df.plot.line() #下面这么放,是区别平时我们看到以matplotlib作图为主的代码不同 #虽然pandas的内置plot是matplotlib,但是仍需要下面2种方法使其图片显示出来 #方法一 #import matplotlib.pyplot as plt #plt.show() #方法二 import matplotlib.pylab as pl pl.show()

3.2.2 图:

python pandas画图(超级简单的数据可视化作图)(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 plt plt.show()

3.3.2 图:

python pandas画图(超级简单的数据可视化作图)(5)

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

3.4 barh水平柱状图:

3.4.1 代码:

#导出模块 import pandas as pd import 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 图:

python pandas画图(超级简单的数据可视化作图)(6)

3.5 box箱式图:

3.5.1 代码:

#导出模块 import pandas as pd import 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 图:

python pandas画图(超级简单的数据可视化作图)(7)

3.6 stackedbar垂直堆砌柱状图:

3.6.1 代码:

#导出模块 import pandas as pd import 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 图:

python pandas画图(超级简单的数据可视化作图)(8)

===高级一点===

4 area面积图:

==========

4.1 代码:

#导出模块 import pandas as pd import 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 图:

python pandas画图(超级简单的数据可视化作图)(9)

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

#导出模块 import pandas as pd import 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的作图法,调动函数

python pandas画图(超级简单的数据可视化作图)(10)

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

python pandas画图(超级简单的数据可视化作图)(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 pd import matplotlib.pyplot as plt df = 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,默认是False plt.show()

5.2 图:

python pandas画图(超级简单的数据可视化作图)(12)

6 散点图Scatter:

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

6.1 代码:

#导出模块 import pandas as pd import matplotlib.pyplot as plt df = 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轴的2组5份数据进行类似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 图:

python pandas画图(超级简单的数据可视化作图)(13)

7 小结:

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

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

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

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

猜您喜欢: