Pandas досі допомагав нам на етапі попередньої обробки даних. Хоча в одному випадку під час створення гістограм ми також використали інший модуль від Pandas – plotting
.
Поки що ми цілеспрямовано уникали цього, тому що його введення раніше викликало б більше питань, ніж відповідей. А саме панди та Matplotlib був настільки звичним і всюдисущим дуетом, що Pandas почав інтегрувати функціональність Matplotlib. Це сильно покладається на Matplotlib для виконання будь-яких фактичних графіків, і ви знайдете багато функцій Matplotlib, загорнутих у вихідний код. Крім того, ви можете використовувати інші серверні модулі для малювання, наприклад Сюжетно та Боке.
Однак Pandas також знайомить нас з парою сюжетів, які НЕ частина стандартних типів графіків Matplotlib, таких як KDE, Криві Ендрюса, Сюжети Bootstrap та Матриці розкиду.
Команда plot()
функція панди DataFrame
використовує серверну частину, визначену plotting.backend
, і в залежності від kind
аргумент – генерує діаграму з використанням заданої бібліотеки. Оскільки багато з них збігаються, немає сенсу розглядати такі типи сюжетів, як line
, bar
, hist
та scatter
. Вони створюватимуть приблизно такі ж графіки з тим самим кодом, що ми робили досі з Matplotlib.
Ми лише коротко розглянемо plot()
функції, оскільки основний механізм досі досліджено. Натомість зосередимося на деяких сюжетах, які ми не може вже легко робити з Matplotlib.
Це буде дуже короткий розділ, оскільки можливості Pandas для малювання та візуалізації бліднуть у порівнянні з Matplotlib – але все одно корисно знати про деякі з них, а також знати про можливість будувати графіки з DataFrame
s безпосередньо.
Команда DataFrame.plot() функція
Команда plot()
функція приймає x
та y
особливості та a kind
аргумент. Крім того, щоб уникнути kind
аргумент, ви також можете викликати DataFrame.plot.kind()
натомість і передайте в x
та y
особливості.
Прийняті значення для kind
аргументами є: line
, bar
, barh
(горизонтальна смуга), hist
, box
, kde
, density
(синонім до kde
), area
, pie
, scatter
та hexbin
(схоже на Heatmap).
import pandas as pd
from matplotlib import pyplot as plt df = pd.read_csv('gdp_csv.csv')
df_eu = df.loc[df['Country Name'] == 'European Union'] df_eu.plot.bar(x = 'Year', y = 'Value')
df_eu.plot.line(x = 'Year', y = 'Value')
df_eu.plot.box(x='Value') plt.show()
Замість надання Series
екземпляри, як ми робимо для Matplotlib – достатньо надати імена стовпців, а оскільки ви телефонуєте plot()
функція на DataFrame
ви візуалізуєте, Pandas легко зіставити ці рядкові значення з відповідними назвами стовпців.
Кожен із цих викликів створює новий Figure
екземпляр і наносить на нього відповідні значення:
Щоб нанести кілька осей на одну Figure
, ви можете зробити a Figure
і один або кілька Axes
через plt.subplots()
і призначити відповідні Axes
до ax
аргумент кожного plot.plot_type()
дзвінок:
import pandas as pd
from matplotlib import pyplot as plt df = pd.read_csv('gdp_csv.csv')
df_eu = df.loc[df['Country Name'] == 'European Union'] fig, ax = plt.subplots(3, 1) df_eu.plot.box(x='Value', ax = ax[0])
df_eu.plot.line(x = 'Year', y = 'Value', ax = ax[1])
df_eu.plot.bar(x = 'Year', y = 'Value', rot = 45, ax = ax[2]) plt.show()
Деякі стандартні аргументи, такі як rotation
аргументи насправді відрізняються в plot()
дзвінки. Наприклад, rotation
скорочується до rot
. Це робить його трохи складним просто переключіться між Matplotlib і Pandas, оскільки ви, швидше за все, потрапите на сторінки документації, просто перевіряючи, які аргументи можна застосувати, а які ні.
Тепер замість створення нового Figure
or Axes
наприклад, кожна з цих ділянок буде розміщена у відповідній Axes
примірники, якими ми їх забезпечили:
Загалом малювання за допомогою Pandas є зручним і швидким, але навіть у цьому випадку для побудови стовпчастих графіків, лінійних графіків і прямокутних графіків вам, ймовірно, захочеться скористатися Matplotlib. Це основний механізм, який неминуче використовує Pandas, а також має більше можливостей налаштування, і вам не доведеться запам’ятовувати новий набір аргументів, які ви можете використовувати з графіками Pandas.
З огляду на це, для деяких ділянок ви можете віддати перевагу Панди, оскільки їх потрібно було б створювати вручну в Matplotlib, і деякі з них є такими складними, що не варті зусиль, як-от рядки KDE.
панди складання графіків Модулі
Що DataFrame
пропозиція щодо візуалізації не надто нова для нас. Однак основний модуль, який вони називають, pandas.plotting
робить. The plotting
модуль має кілька функцій, якими ми можемо скористатися, наприклад autocorrelation_plot()
, bootstrap_plot()
та scatter_matrix()
.
Кожен із них приймає або a Series
або DataFrame
, залежно від типу візуалізації, яку вони створюють, а також певні параметри для специфікації графіка та стилю.
Сюжет Bootstrap
Запуск завантаження це процес випадкової вибірки (із заміною) набору даних і обчислення показників точності, таких як зміщення, дисперсія та довірчі інтервали для випадкових зразків. Практично «із заміною» означає, що кожен навмання вибраний елемент можна вибрати знову. Без заміни означає, що після кожного випадково вибраного елемента він видаляється з пулу для наступного зразка.
A Сюжет Bootstrap, створений Pandas, завантажує середню, медіану та середню статистику набору даних на основі вибірки size
, після чого сюжет згодом показується через plt.show()
. Аргументи за замовчуванням для size
та samples
він має 50
та 500
відповідно.
Це означає, що для функції ми беремо вибірку 50
значення. Потім створюється підвибірка з 50 елементів (синтетичні дані) для цих 50 значень і для них обчислюється підсумкова статистика (середнє/медіана/середній діапазон). Цей процес повторюється 500
разів, тож у підсумку ми маємо 500 підсумкових статистичних даних:
import pandas as pd
from matplotlib import pyplot as plt df = pd.read_csv('./datasets/gdp_csv.csv')
df_eu = df.loc[df['Country Name'] == 'European Union'] pd.plotting.bootstrap_plot(df_eu['Value']) plt.show()
Графік автокореляції
Діаграми автокореляції використовуються для перевірки випадковості даних для даних часових рядів. множинний автокореляції обчислюються для різних часових позначок, і якщо дані справді випадкові – кореляція буде близькою до нуля. Якщо ні – кореляція буде більше нуля.
Давайте побудуємо два графіки автокореляції – один з нашим значення функція, і один з a Series
заповнений випадковими значеннями:
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt df = pd.read_csv('gdp_csv.csv')
# Filter DataFrame for the EU
df_eu = df.loc[df['Country Name'] == 'European Union']
# Generate 50 random integers between 0 and 100, and turn into a Series
random_series = pd.Series(np.random.randint(0, 100, size=50)) # Plot Autocorrelation Plot for the *Value* feature
pd.plotting.autocorrelation_plot(df_eu['Value'])
# Plot Autocorrelation Plot for the *random_series*
pd.plotting.autocorrelation_plot(random_series) plt.show()
Графік автокореляції для random_series
має обертатися навколо 0
, оскільки це випадкові дані, тоді як графік для Value
функція не буде:
Варто зазначити, що автокореляція вимірює один форма випадковості, оскільки існують некорельовані, але невипадкові дані. Якщо він невипадковий, але не має суттєвих кореляцій, графік автокореляції вказуватиме, що дані є випадковими.
Матриці розкиду
Матриці розкиду сюжет а сітка діаграм розсіювання для всіх об’єктів проти всіх об’єктів. Оскільки це неминуче порівнює кожну ознаку з собою, а також – з діагональ де це відбувається, зазвичай замінюється на a Гістограма цієї функції, а не точкову діаграму. Матриці розкиду також відомі як Парні сюжети, і Seaborn пропонує a pairplot()
функція тільки для цього.
Команда scatter_matrix()
функція приймає a DataFrame
створює матрицю розсіювання для всіх її числових характеристик і повертає двовимірний масив Axes
екземпляри, які складають матрицю розсіювання. Щоб щось налаштувати в них, ви захочете їх переглянути:
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt df = pd.read_csv('worldHappiness2019.csv') axes = pd.plotting.scatter_matrix(df, diagonal='hist') for ax in axes.flatten(): # Rotate back to 0 degrees since they're automatically rotated by 90 ax.yaxis.label.set_rotation(0) # As to not overlap with the Axes instances, set the ticklabel # alignment to 'right' ax.yaxis.label.set_ha('right') plt.show()
Це призводить до досить великої матриці розкиду всіх функцій проти всіх інших функцій:
Ви також можете здати в diagonal
аргумент, який приймає 'hist'
or 'kde'
щоб вказати, який тип діаграми розподілу ви бажаєте побудувати по діагоналі, а також alpha
, вказуючи напівпрозорість маркерів на діаграмах розсіювання.
- 100
- МЕНЮ
- ВСІ
- вже
- Інший
- аргументація
- навколо
- буття
- Біт
- Box
- call
- можливості
- Глава
- контроль
- код
- Колонка
- загальний
- країна
- Пара
- створення
- дані
- різний
- розподіл
- Європейська
- european union
- приклад
- особливість
- риси
- Сфокусувати
- функція
- функціональність
- Загальне
- породжувати
- HTTPS
- IT
- відомий
- великий
- більше
- бібліотека
- Лінія
- карта
- Матриця
- найбільш
- а саме
- Імена
- Близько
- пропонувати
- Пропозиції
- Опції
- Інше
- фаза
- басейн
- процес
- виробляти
- забезпечувати
- цілей
- підвищення
- RE
- замінити
- результати
- Умови повернення
- Зазначений
- обраний
- комплект
- Короткий
- значний
- аналогічний
- So
- вихідні
- специфікація
- почалася
- статистика
- Джерело
- через
- союз
- us
- значення
- візуалізації
- Що
- Вікіпедія
- вартість
- X
- рік
- нуль