Pandas — это библиотека с открытым исходным кодом, используемая для обработки и анализа данных в Python. Это быстрый и мощный инструмент, предлагающий структуры данных и операции для работы с числовыми таблицами и временными рядами. Примеры таких операций с данными включают объединение, изменение формы, выборку, очистку данных и обработку данных. Эта библиотека позволяет импортировать данные из различных форматов файлов, таких как SQL, JSON, Microsoft Excel и значения, разделённые запятыми. В этой статье объясняется, как использовать библиотеку pandas для построения графика временных рядов или линейного графика для заданного набора данных.

Линейный график — это графическое представление, наглядно показывающее взаимосвязь между определёнными переменными или изменения в данных с течением времени с помощью нескольких точек, обычно упорядоченных по значению оси X, которые соединены отрезками прямых линий. Независимая переменная представлена на оси X, а на оси Y представлены данные, которые изменяются в зависимости от переменной на оси X, то есть зависимой переменной.

Чтобы создать линейный график с помощью pandas, мы обычно создаём DataFrame* с набором данных, который нужно построить. Затем вызывается метод plot.line() для DataFrame.

Синтаксис:

DataFrame.plot.line(x, y) 

В таблице ниже приведены основные параметры:

Parameter Value Default Value Use
x Int or string DataFrame indices Set the values to be represented in the x-axis.
y Int or string Remaining columns in DataFrame Set the values to be represented in the y-axis.

Дополнительные параметры включают цвет (определяет цвет линии), заголовок (определяет название графика) и тип (определяет тип графика). Переменная по умолчанию для параметра «тип» этого метода — «линия». Поэтому вам не нужно задавать этот параметр, чтобы создать линейный график.

Пример 1:

В этом примере показано, как создать базовый линейный график для фрейма данных с одной переменной по оси Y.Используйте pandas в Python3, чтобы построить график на основе следующих данных о потреблении калорий в течение недели. Вот наш фрейм данных.

Код:

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

 Вывод:

Теперь построим график переменной.

# 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(); 

Вывод:

Пример 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 

Вывод:

Создайте линейный график, который показывает взаимосвязи между этими тремя переменными.

Код:

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

Вывод:

Альтернативным способом может быть использование метода gca() из библиотеки matplotlib.pyplot следующим образом:

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 ) 

Вывод:

Пример 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') 

Вывод:

Пример 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' ) 

Вывод: