Зчитування табличних даних у датафрейми
Останнє оновлення 2025-10-31 | Редагувати цю сторінку
Огляд
Питання
- Як я можу завантажити табличні дані у датафрейми 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. - Тому не використовуйте
(), тому що це - не функція.
- Подібно до
- Called a member variable, or just member.
ВИХІД
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) не копіює дані, а лише змінює їх подання. - Like
columns, it is a member variable.
ВИХІД
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.
- Виклик якого методу виведе перші три рядки цього датафрейму?
- Виклик якого методу виведе останні три стовпці цього датафрейму? (Підказка: вам може знадобитися змінити спосіб перегляду даних).
- We can check out the first five rows of
data_americasby executingdata_americas.head()which lets us view the beginning of the DataFrame. Ми можемо вказати кількість рядків, які ми хочемо бачити, визначивши параметр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(), що застосовувався вище. However, here we want to look at the last three columns so we need to change our view and then usetail(). To do so, we create a new DataFrame in which rows and columns are switched:
Тепер ми можемо переглянути останні три стовпці
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
This shows the data that we want, but we may prefer to display three columns instead of three rows, so we can flip it back:
Note: we could have done the above in a single line of code by ‘chaining’ the commands:
Reading Files in Other Directories
Дані вашого поточного проєкту зберігаються у файлі під назвою
microbes.csv, який знаходиться в каталозі
field_data. You are doing analysis in a notebook called
analysis.ipynb in a sibling folder called
thesis:
ВИХІД
your_home_directory
+-- field_data/
| +-- microbes.csv
+-- thesis/
+-- analysis.ipynb
What value(s) should you pass to read_csv to read
microbes.csv in analysis.ipynb?
We need to specify the path to the file of interest in the call to
pd.read_csv. We first need to ‘jump’ out of the folder
thesis using ‘../’ and then into the folder
field_data using ‘field_data/’. Після цього вказати назву
файлу microbes.csv. Кінцевий результат наступний:
Запис даних
As well as the read_csv function for reading data from a
file, Pandas provides a to_csv function to write dataframes
to files. Applying what you’ve learned about reading from files, write
one of your dataframes to a file called processed.csv. Ви
можете скористатися help, щоб отримати інформацію про
застосування to_csv.
Щоб записати датафрейм americas у файл
processed.csv, виконайте таку команду:
Щоб отримати довідку щодо read_csv або
to_csv, ви можете виконати, наприклад:
Зауважте, що команди help(to_csv) або
help(pd.to_csv) є помилковими! This is due to the fact that
to_csv is not a global Pandas function, but a member
function of DataFrames. This means you can only call it on an instance
of a DataFrame e.g., data_americas.to_csv or
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. - Use
DataFrame.infoto find out more about a dataframe. - Змінна
DataFrame.columnsзберігає інформацію про стовпці датафрейму. - Використовуйте
DataFrame.T, щоб транспонувати датафрейм. - Використовуйте
DataFrame.describe, щоб отримати зведену статистику даних.