Зчитування табличних даних у датафрейми
Останнє оновлення 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(), щоб дізнатися більше
про датафрейми.
ВИХІД
<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. - Тому не використовуйте
(), тому що це - не функція.
- Подібно до
- Ця змінна називається атрибутом.
ВИХІД
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, це атрибут датафрейму.
ВИХІД
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', усі інші стовпці ігноруються.
ВИХІД
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().
Перевірка даних
Після введення датафрейму data_americas попрацюйте з
довідкою help(data_americas.head) та
help(data_americas.tail), щоб дізнатися про призначення
команд DataFrame.head та DataFrame.tail.
- Виклик якого методу виведе перші три рядки цього датафрейму?
- Виклик якого методу виведе останні три стовпці цього датафрейму? (Підказка: вам може знадобитися змінити спосіб перегляду даних).
- Ми можемо побачити перші п’ять рядків датафрейму
data_americasза допомогоюdata_americas.head(), що дозволяє нам швидко переглянути його структуру. Ми можемо вказати кількість рядків, які ми хочемо бачити, визначивши параметрnу нашому викликуamericas.head(). Для перегляду перших трьох рядків виконайте:
ВИХІД
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
- Щоб перевірити останні три рядки
data_americas, ми можемо використати командуdata_americas.tail(n=3), яка аналогічна методуhead(), що застосовувався вище. Однак тут ми хочемо переглянути останні три стовпці, тому нам потрібно змінити подання інформації, а потім використати методtail(). Для цього ми маємо транспонувати цей датафрейм:
Тепер ми можемо переглянути останні три стовпці
data_americas за допомогою перегляду останніх трьох рядків
americas_flipped:
ВИХІД
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
Це показує потрібні нам дані, але якщо ми віддаємо перевагу перегляду трьох стовпців замість трьох рядків, ми можемо додатково транспонувати останній результат:
Примітка: того самого результату можна було досягти за допомогою однієї команди, об’єднавши команди в ‘ланцюжок’:
Читання файлів в інших каталогах
Дані вашого поточного проєкту зберігаються у файлі під назвою
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. Кінцевий результат наступний:
Запис даних
Окрім функції read_csv для зчитування даних з файлу,
Pandas надає функцію to_csv для запису датафреймів у файли.
Використовуючи знання про читання з файлів, запишіть один з ваших
датафреймів у файл під назвою processed.csv. Ви можете
скористатися help, щоб отримати інформацію про застосування
to_csv.
Щоб записати датафрейм americas у файл
processed.csv, виконайте таку команду:
Щоб отримати довідку щодо read_csv або
to_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_colto specify that a column’s values should be used as row headings. - Використовуйте
DataFrame.info, щоб дізнатися більше про структуру датафрейму. - Змінна
DataFrame.columnsзберігає інформацію про стовпці датафрейму. - Використовуйте
DataFrame.T, щоб транспонувати датафрейм. - Використовуйте
DataFrame.describe, щоб отримати зведену статистику даних.