Зчитування табличних даних у датафрейми

Останнє оновлення 2025-12-29 | Редагувати цю сторінку

Огляд

Питання

  • Як я можу завантажити табличні дані у датафрейми Pandas?

Цілі

  • Імпорт бібліотеки Pandas.
  • Використання Pandas для завантаження набору даних у CSV форматі.
  • Базова інформація про датафрейми бібліотеки Pandas.

Використовуйте бібліотеку Pandas для статистичного аналізу табличних даних.


  • Pandas - це бібліотека Python, яка широко використовується для статистичного аналізу, зокрема при роботі з табличними даними.
  • Ця бібліотека запозичує багато функцій з датафреймів мови R.
    • Датафрейм — це двовимірна таблиця з іменованими стовпцями, які потенційно містять різні типи даних.
  • Завантажте цю бібліотеку за допомогою import pandas as pd. Псевдонім pd зазвичай використовується для посилання на бібліотеку Pandas у коді.
  • Файл даних зі значеннями, розділеними комами (Comma Separate Values - CSV), читається за допомогою pd.read_csv.
    • Аргумент — це ім’я файлу, який потрібно прочитати.
    • Ця команда повертає датафрейм, який ви можете присвоїти змінній

PYTHON

import pandas as pd

data_oceania = pd.read_csv('data/gapminder_gdp_oceania.csv')
print(data_oceania)

ВИХІД

       country  gdpPercap_1952  gdpPercap_1957  gdpPercap_1962  \
0    Australia     10039.59564     10949.64959     12217.22686
1  New Zealand     10556.57566     12247.39532     13175.67800

   gdpPercap_1967  gdpPercap_1972  gdpPercap_1977  gdpPercap_1982  \
0     14526.12465     16788.62948     18334.19751     19477.00928
1     14463.91893     16046.03728     16233.71770     17632.41040

   gdpPercap_1987  gdpPercap_1992  gdpPercap_1997  gdpPercap_2002  \
0     21888.88903     23424.76683     26997.93657     30687.75473
1     19007.19129     18363.32494     21050.41377     23189.80135

   gdpPercap_2007
0     34435.36744
1     25185.00911
  • Стовпці у датафреймі – це спостережувані змінні, а рядки – це спостереження.
  • Pandas використовує зворотну скісну риску \ для позначення перенесених рядків, коли вивід занадто широкий для розміщення на екрані.
  • Використання змістовних імен для датафреймів допомагає нам розрізняти кілька датафреймів, запобігаючи випадковому перезапису або помилковому читанню.
Виноска

Файл не знайдено

Наші уроки зберігають свої файли даних у підкаталозі data, тому шлях до файлу є таким: data/gapminder_gdp_oceania.csv. Якщо ви забули додатиdata/, або якщо ваша копія файлу знаходиться в іншому місці, ви отримаєте runtime error, який закінчується таким рядком:

ПОМИЛКА

FileNotFoundError: [Errno 2] No such file or directory: 'data/gapminder_gdp_oceania.csv'

Використовуйте index_col, щоб вказати стовпець, значення якого мають використовуватися як заголовки рядків.


  • Заголовки рядків є числами (0 і 1 у цьому випадку).
  • Але насправді краще індексувати за назвами країн.
  • Для цього передайте назву стовпця в read_csv як параметр index_col.
  • Назва датафрейму data_oceania_country говорить нам про те, з якою географічною зоною пов’язані дані (oceania) та про те, як вони індексуються (country).

PYTHON

data_oceania_country = pd.read_csv('data/gapminder_gdp_oceania.csv', index_col='country')
print(data_oceania_country)

ВИХІД

             gdpPercap_1952  gdpPercap_1957  gdpPercap_1962  gdpPercap_1967  \
country
Australia       10039.59564     10949.64959     12217.22686     14526.12465
New Zealand     10556.57566     12247.39532     13175.67800     14463.91893

             gdpPercap_1972  gdpPercap_1977  gdpPercap_1982  gdpPercap_1987  \
country
Australia       16788.62948     18334.19751     19477.00928     21888.88903
New Zealand     16046.03728     16233.71770     17632.41040     19007.19129

             gdpPercap_1992  gdpPercap_1997  gdpPercap_2002  gdpPercap_2007
country
Australia       23424.76683     26997.93657     30687.75473     34435.36744
New Zealand     18363.32494     21050.41377     23189.80135     25185.00911

Використовуйте DataFrame.info(), щоб дізнатися більше про датафрейми.


PYTHON

data_oceania_country.info()

ВИХІД

<class 'pandas.core.frame.DataFrame'>
Index: 2 entries, Australia to New Zealand
Data columns (total 12 columns):
gdpPercap_1952    2 non-null float64
gdpPercap_1957    2 non-null float64
gdpPercap_1962    2 non-null float64
gdpPercap_1967    2 non-null float64
gdpPercap_1972    2 non-null float64
gdpPercap_1977    2 non-null float64
gdpPercap_1982    2 non-null float64
gdpPercap_1987    2 non-null float64
gdpPercap_1992    2 non-null float64
gdpPercap_1997    2 non-null float64
gdpPercap_2002    2 non-null float64
gdpPercap_2007    2 non-null float64
dtypes: float64(12)
memory usage: 208.0+ bytes
  • Це DataFrame
  • Містить два рядки з назвами 'Australia' та 'New Zealand'
  • А також дванадцять стовпців, кожен з яких містить два 64-бітних значення з плаваючою комою.
    • Пізніше ми поговоримо про null значення, які використовуються для представлення відсутніх спостережень.
  • Використовує 208 байтів пам’яті.

Змінна DataFrame.columns зберігає інформацію про стовпці датафрейму.


  • Зверніть увагу, що це дані, а не метод. (Відсутні дужки)
    • Подібно до math.pi.
    • Тому не використовуйте (), тому що це - не функція.
  • Ця змінна називається атрибутом.

PYTHON

print(data_oceania_country.columns)

ВИХІД

Index(['gdpPercap_1952', 'gdpPercap_1957', 'gdpPercap_1962', 'gdpPercap_1967',
       'gdpPercap_1972', 'gdpPercap_1977', 'gdpPercap_1982', 'gdpPercap_1987',
       'gdpPercap_1992', 'gdpPercap_1997', 'gdpPercap_2002', 'gdpPercap_2007'],
      dtype='object')

Використовуйте DataFrame.T, щоб транспонувати датафрейм.


  • Іноді потрібно розглядати стовпці як рядки та навпаки.
  • Транспонування (written .T) не копіює дані, а лише змінює їх подання.
  • Подібно до columns, це атрибут датафрейму.

PYTHON

print(data_oceania_country.T)

ВИХІД

country           Australia  New Zealand
gdpPercap_1952  10039.59564  10556.57566
gdpPercap_1957  10949.64959  12247.39532
gdpPercap_1962  12217.22686  13175.67800
gdpPercap_1967  14526.12465  14463.91893
gdpPercap_1972  16788.62948  16046.03728
gdpPercap_1977  18334.19751  16233.71770
gdpPercap_1982  19477.00928  17632.41040
gdpPercap_1987  21888.88903  19007.19129
gdpPercap_1992  23424.76683  18363.32494
gdpPercap_1997  26997.93657  21050.41377
gdpPercap_2002  30687.75473  23189.80135
gdpPercap_2007  34435.36744  25185.00911

Використовуйте DataFrame.describe, щоб отримати зведену статистику даних.


DataFrame.describe() отримує зведену статистику лише для стовпців, які містять числові дані. Якщо ви не використовуєте аргумент include='all', усі інші стовпці ігноруються.

PYTHON

print(data_oceania_country.describe())

ВИХІД

       gdpPercap_1952  gdpPercap_1957  gdpPercap_1962  gdpPercap_1967  \
count        2.000000        2.000000        2.000000        2.000000
mean     10298.085650    11598.522455    12696.452430    14495.021790
std        365.560078      917.644806      677.727301       43.986086
min      10039.595640    10949.649590    12217.226860    14463.918930
25%      10168.840645    11274.086022    12456.839645    14479.470360
50%      10298.085650    11598.522455    12696.452430    14495.021790
75%      10427.330655    11922.958888    12936.065215    14510.573220
max      10556.575660    12247.395320    13175.678000    14526.124650

       gdpPercap_1972  gdpPercap_1977  gdpPercap_1982  gdpPercap_1987  \
count         2.00000        2.000000        2.000000        2.000000
mean      16417.33338    17283.957605    18554.709840    20448.040160
std         525.09198     1485.263517     1304.328377     2037.668013
min       16046.03728    16233.717700    17632.410400    19007.191290
25%       16231.68533    16758.837652    18093.560120    19727.615725
50%       16417.33338    17283.957605    18554.709840    20448.040160
75%       16602.98143    17809.077557    19015.859560    21168.464595
max       16788.62948    18334.197510    19477.009280    21888.889030

       gdpPercap_1992  gdpPercap_1997  gdpPercap_2002  gdpPercap_2007
count        2.000000        2.000000        2.000000        2.000000
mean     20894.045885    24024.175170    26938.778040    29810.188275
std       3578.979883     4205.533703     5301.853680     6540.991104
min      18363.324940    21050.413770    23189.801350    25185.009110
25%      19628.685413    22537.294470    25064.289695    27497.598692
50%      20894.045885    24024.175170    26938.778040    29810.188275
75%      22159.406358    25511.055870    28813.266385    32122.777857
max      23424.766830    26997.936570    30687.754730    34435.367440
  • Це не додає багато нової інформації у випадку лише двох записів, але дуже корисно, коли їх тисячі.
Вправа

Ще одна вправа на читання даних

Зчитайте дані з файлу gapminder_gdp_americas.csv (який має бути в тому ж каталозі, що й gapminder_gdp_oceania.csv) у змінну data_americas і відобразіть її зведену статистику.

Щоб зчитати CSV-файл, ми використовуємо функцію pd.read_csv і передаємо їй ім’я файлу 'data/gapminder_gdp_americas.csv' як аргумент. Також ми передаємо назву стовпця 'country' у параметрі index_col, щоб індексувати за країною. Зведену статистику можна показати за допомогою методу DataFrame.describe().

PYTHON

data_americas = pd.read_csv('data/gapminder_gdp_americas.csv', index_col='country')
data_americas.describe()
Вправа

Перевірка даних

Після введення датафрейму data_americas попрацюйте з довідкою help(data_americas.head) та help(data_americas.tail), щоб дізнатися про призначення команд DataFrame.head та DataFrame.tail.

  1. Виклик якого методу виведе перші три рядки цього датафрейму?
  2. Виклик якого методу виведе останні три стовпці цього датафрейму? (Підказка: вам може знадобитися змінити спосіб перегляду даних).
  1. Ми можемо побачити перші п’ять рядків датафрейму data_americas за допомогою data_americas.head(), що дозволяє нам швидко переглянути його структуру. Ми можемо вказати кількість рядків, які ми хочемо бачити, визначивши параметр n у нашому виклику americas.head(). Для перегляду перших трьох рядків виконайте:

PYTHON

data_americas.head(n=3)

ВИХІД

          continent  gdpPercap_1952  gdpPercap_1957  gdpPercap_1962  \
country
Argentina  Americas     5911.315053     6856.856212     7133.166023
Bolivia    Americas     2677.326347     2127.686326     2180.972546
Brazil     Americas     2108.944355     2487.365989     3336.585802

          gdpPercap_1967  gdpPercap_1972  gdpPercap_1977  gdpPercap_1982  \
country
Argentina     8052.953021     9443.038526    10079.026740     8997.897412
Bolivia       2586.886053     2980.331339     3548.097832     3156.510452
Brazil        3429.864357     4985.711467     6660.118654     7030.835878

           gdpPercap_1987  gdpPercap_1992  gdpPercap_1997  gdpPercap_2002  \
country
Argentina     9139.671389     9308.418710    10967.281950     8797.640716
Bolivia       2753.691490     2961.699694     3326.143191     3413.262690
Brazil        7807.095818     6950.283021     7957.980824     8131.212843

           gdpPercap_2007
country
Argentina    12779.379640
Bolivia       3822.137084
Brazil        9065.800825
  1. Щоб перевірити останні три рядки data_americas, ми можемо використати команду data_americas.tail(n=3), яка аналогічна методу head(), що застосовувався вище. Однак тут ми хочемо переглянути останні три стовпці, тому нам потрібно змінити подання інформації, а потім використати метод tail(). Для цього ми маємо транспонувати цей датафрейм:

PYTHON

americas_flipped = data_americas.T

Тепер ми можемо переглянути останні три стовпці data_americas за допомогою перегляду останніх трьох рядків americas_flipped:

PYTHON

americas_flipped.tail(n=3)

ВИХІД

country        Argentina  Bolivia   Brazil   Canada    Chile Colombia  \
gdpPercap_1997   10967.3  3326.14  7957.98  28954.9  10118.1  6117.36
gdpPercap_2002   8797.64  3413.26  8131.21    33329  10778.8  5755.26
gdpPercap_2007   12779.4  3822.14   9065.8  36319.2  13171.6  7006.58

country        Costa Rica     Cuba Dominican Republic  Ecuador    ...     \
gdpPercap_1997    6677.05  5431.99             3614.1  7429.46    ...
gdpPercap_2002    7723.45  6340.65            4563.81  5773.04    ...
gdpPercap_2007    9645.06   8948.1            6025.37  6873.26    ...

country          Mexico Nicaragua   Panama Paraguay     Peru Puerto Rico  \
gdpPercap_1997   9767.3   2253.02  7113.69   4247.4  5838.35     16999.4
gdpPercap_2002  10742.4   2474.55  7356.03  3783.67  5909.02     18855.6
gdpPercap_2007  11977.6   2749.32  9809.19  4172.84  7408.91     19328.7

country        Trinidad and Tobago United States  Uruguay Venezuela
gdpPercap_1997             8792.57       35767.4  9230.24   10165.5
gdpPercap_2002             11460.6       39097.1     7727   8605.05
gdpPercap_2007             18008.5       42951.7  10611.5   11415.8

Це показує потрібні нам дані, але якщо ми віддаємо перевагу перегляду трьох стовпців замість трьох рядків, ми можемо додатково транспонувати останній результат:

PYTHON

americas_flipped.tail(n=3).T    

Примітка: того самого результату можна було досягти за допомогою однієї команди, об’єднавши команди в ‘ланцюжок’:

PYTHON

data_americas.T.tail(n=3).T
Вправа

Читання файлів в інших каталогах

Дані вашого поточного проєкту зберігаються у файлі під назвою microbes.csv, який знаходиться в каталозі field_data. Ви виконуєте аналіз у блокноті під назвою analysis.ipynb, який розміщено у сусідньому каталозі thesis:

ВИХІД

your_home_directory
+-- field_data/
|   +-- microbes.csv
+-- thesis/
    +-- analysis.ipynb

Які значення вам потрібно передати у функцію read_csv, щоб прочитати microbes.csv з блокнота analysis.ipynb?

Нам треба вказати шлях до потрібного файлу як аргумент функції pd.read_csv. По-перше, потрібно ‘вийти’ з каталогу thesis за допомогою ‘../’, а потім ‘зайти’ у каталог field_data за допомогою ‘field_data/’. Після цього вказати назву файлу microbes.csv. Кінцевий результат наступний:

PYTHON

data_microbes = pd.read_csv('../field_data/microbes.csv')
Вправа

Запис даних

Окрім функції read_csv для зчитування даних з файлу, Pandas надає функцію to_csv для запису датафреймів у файли. Використовуючи знання про читання з файлів, запишіть один з ваших датафреймів у файл під назвою processed.csv. Ви можете скористатися help, щоб отримати інформацію про застосування to_csv.

Щоб записати датафрейм americas у файл processed.csv, виконайте таку команду:

PYTHON

americas.to_csv('processed.csv')

Щоб отримати довідку щодо read_csv або to_csv, ви можете виконати, наприклад:

PYTHON

help(data_americas.to_csv)
help(pd.read_csv)

Зауважте, що команди help(to_csv) або help(pd.to_csv) є помилковими! Це пов’язано з тим, що to_csv є не глобальною функцією Pandas, а методом, визначеним для датафреймів. Це означає, що ви можете викликати його лише для будь-якого датафрейма, наприклад, data_americas.to_csv або data_oceania.to_csv

Ключові моменти
  • Use the Pandas library to get basic statistics out of tabular data.
  • Use index_col to specify that a column’s values should be used as row headings.
  • Використовуйте DataFrame.info, щоб дізнатися більше про структуру датафрейму.
  • Змінна DataFrame.columns зберігає інформацію про стовпці датафрейму.
  • Використовуйте DataFrame.T, щоб транспонувати датафрейм.
  • Використовуйте DataFrame.describe, щоб отримати зведену статистику даних.