用Pandas绘制时间序列图或线图

用Pandas绘制时间序列图或线图

Pandas是一个开源的库,用于Python中的数据操作和分析。它是一个快速而强大的工具,提供数据结构和操作来处理数字表和时间序列。这些数据处理操作的例子包括合并、重塑、选择、数据清洗和数据处理。这个库允许从各种文件格式导入数据,如SQL、JSON、Microsoft Excel和逗号分隔的值。本文解释了如何使用pandas库为给定的数据集生成时间序列图,或线图。

线形图是一种图形显示,它用几个点直观地表示某些变量之间的相关性或数据随时间的变化,这些点通常按其X轴值排序,并由直线段连接。自变量在X轴上表示,而Y轴则表示取决于X轴变量而变化的数据,又称因变量。

为了用pandas生成线图,我们通常用要绘制的数据集创建一个DataFrame*。然后,在DataFrame上调用plot.line()方法。

语法:

DataFrame.plot.line(x, y)

下表解释了该方法的主要参数。

参数 默认值 使用
x Int或string DataFrame indices 设置在x轴上要表示的值。
y Int或string DataFrame中的剩余列 设置要在y轴上表示的数值。

其他参数包括颜色(指定线条的颜色),标题(指定绘图的标题),和种类(指定使用哪种类型的绘图)。这个方法的 “种类 “参数的默认变量是’线’。因此,你不必为了创建一个直线图而去设置它。

示例 1:

这个例子说明了如何用一个Y轴变量生成DataFrame的基本线图。使用Python3中的pandas来绘制以下某人一周的卡路里摄入量的数据,这是我们的数据框架。

代码:

import pandas as pd
  
# Create a list of data to be represented in x-axis
days = [ 'Saturday' , 'Sunday' , 'Monday' , 'Tuesday' ,
        'Wednesday' , 'Thursday' , 'Friday' ]
  
# Create a list of data to be 
# represented in y-axis
calories = [ 1670 , 2011 , 1853 , 2557 ,
            1390 , 2118 , 2063 ]
  
# Create a dataframe using the two lists
df_days_calories = pd.DataFrame(
    { 'day' : days , 'calories' : calories })
  
df_days_calories

输出:

用Pandas绘制时间序列图或线图

现在,绘制变量图。

# use plot() method on the dataframe
df_days_calories.plot( 'day' , 'calories' )
  
# Alternatively, you can use .set_index 
# to set the data of each axis as follows:
# df_days_calories.set_index('day')['calories'].plot();

输出:

用Pandas绘制时间序列图或线图

示例 2:

这个例子解释了如何创建一个在Y轴上有两个变量的线图。
一名学生被要求对他在学校各科期中考试周的压力水平进行评分,评分标准为1-10(10为最高)。他还被问及他在每次期中考试中的成绩(满分20分)。

代码:

import pandas as pd
  
# Create a list of data to
# be represented in x-axis
subjects = [ 'Math' , 'English' , 'History' ,
            'Chem' , 'Geo' , 'Physics' , 'Bio' , 'CS' ]
  
# Create a list of data to be 
# represented in y-axis
stress = [ 9 , 3 , 5 , 1 , 8 , 5 , 10 , 2 ]
  
# Create second list of data
# to be represented in y-axis
grades = [ 15 , 10 , 7 , 8 , 11 , 8 , 17 , 20 ]
  
# Create a dataframe using the three lists
df = pd.DataFrame(list(zip( stress , grades )),
                  index = subjects , 
                  columns = [ 'Stress' , 'Grades' ])
df

输出:

用Pandas绘制时间序列图或线图

创建一个显示这三个变量之间关系的线图。

代码:

# use plot() method on the dataframe. 
# No parameters are passed so it uses
# variables given in the dataframe
df.plot()

输出:

用Pandas绘制时间序列图或线图

另一种方法是使用matplotlib.pyplot库中的gca()方法,如下所示。

import pandas as pd
import matplotlib.pyplot as plt
  
# Create a list of data
# to be represented in x-axis
subjects = [ 'Math' , 'English' , 'History ',
            'Chem' , 'Geo' , 'Physics' , 'Bio' , 'CS' ]
  
# Create a list of data
# to be represented in y-axis
stress = [ 9, 3 , 5 , 1 , 8 , 5 , 10 , 2 ]
  
# Create second list of data to be represented in y-axis
grades = [ 15, 10 , 7 , 8 , 11 , 8 , 17 , 20 ]
  
# Create a dataframe using the two lists
df_days_calories = pd.DataFrame(
    { 'Subject' : subjects , 
     'Stress': stress , 
     'Grade': grades})
  
ax = plt.gca()
  
#use plot() method on the dataframe
df_days_calories.plot( x = 'Subject' , y = 'Stress', ax = ax )
df_days_calories.plot( x = 'Subject' , y = 'Grade' , ax = ax )

输出:

用Pandas绘制时间序列图或线图

示例 3:

在这个例子中,我们将创建一个没有明确定义变量列表的图。我们还将添加一个标题并改变颜色。
一个硬币收集者最初有30枚硬币。此后,在一个月的时间里,他每天找到一枚硬币。用线段图显示他在该月每天有多少枚硬币。

import pandas as pd
  
#initialize the temperature value at the first day of the month
c = 30
  
# Create a dataframe using the three lists
# the y-axis variable is a list created using
# a for loops, in each iteration, 
# it adds 1 to previous value
# the x-axis variable is a list of values ranging
# from 1 to 31 (31 not included) with a step of 1
df = pd.DataFrame([ c + x for x in range( 0 , 30 )],
                  index = [*range( 1 , 31 , 1 )],
                  columns = [ 'Temperature (C)' ])
  
# use plot() method on the dataframe. 
# No parameters are passed so it uses 
# variables given in the dataframe
df.plot(color='red', title = 'Total Coins per Day')

输出:

用Pandas绘制时间序列图或线图

示例 4:

在这个例子中,我们将绘制一个数据框架的特定列。该数据框架由三个列表组成,然而,我们将只选择两个列表来添加到绘图中。

代码:

import pandas as pd
  
# Create a dataframe using three lists
df = pd.DataFrame(
    {'List1': [ 1 , 2 , 3 , 4 , 5 , 6 ], 
     'List2': [ 5 , 10 , 15 , 20 , 25 , 30 ], 
     'List3': [ 'a' , 'b' , 'c' , 'd' , 'e' , 'f' ]})
  
# use plot() method on the dataframe.
# List3 is in the x-axis and List2 in the y-axis
df.plot( 'List3' , 'List2' )

输出:

用Pandas绘制时间序列图或线图

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程