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' )
Вывод: