Pandas DataFrame

DataFrame — это двумерная таблица с подписанными строками и столбцами. По сути это набор объектов Series, объединённых общим индексом. Это основной объект Pandas: всё, что выглядит как таблица в Excel/SQL, представляется в виде DataFrame.

Когда использовать

  • Чтение CSV/JSON/Excel логов и таблиц.

  • Многоколоночные данные: время + датчик1 + датчик2 + …

  • Подготовка обучающих выборок для ML.

Пример 1. Из словаря списков

import pandas as pd

df = pd.DataFrame({
    "time": [0, 1, 2],
    "temp": [22.1, 22.3, 22.5],
    "hum":  [55, 54, 53],
})
print(df)

Output:

   time  temp  hum
0     0  22.1   55
1     1  22.3   54
2     2  22.5   53

Пример 2. Из списка кортежей

import pandas as pd

rows = [("bot1", 3.7), ("bot2", 3.6), ("bot3", 3.5)]
df = pd.DataFrame(rows, columns=["device", "battery"])
print(df)

Output:

  device  battery
0   bot1      3.7
1   bot2      3.6
2   bot3      3.5

Пример 3. Доступ к столбцу

import pandas as pd

df = pd.DataFrame({"a": [1, 2, 3], "b": [10, 20, 30]})
print(df["a"])
print(type(df["a"]))

Output:

0    1
1    2
2    3
Name: a, dtype: int64
<class 'pandas.core.series.Series'>

Один столбец — это Series. Чтобы получить DataFrame с одним столбцом, используйте список: df[["a"]].

Пример 4. Доступ к строке

import pandas as pd

df = pd.DataFrame({"x": [10, 20, 30]}, index=["a", "b", "c"])
print(df.loc["b"])
print(df.iloc[0])

Output:

x    20
Name: b, dtype: int64
x    10
Name: a, dtype: int64

.loc — по метке, .iloc — по позиции.

Пример 5. Новый столбец

import pandas as pd

df = pd.DataFrame({"temp_c": [20, 25, 30]})
df["temp_f"] = df["temp_c"] * 9 / 5 + 32
print(df)

Output:

   temp_c  temp_f
0      20    68.0
1      25    77.0
2      30    86.0

Пример 6. Информация о таблице

import pandas as pd

df = pd.DataFrame({"a": [1, 2, 3], "b": [1.5, 2.5, 3.5]})
print("shape:", df.shape)
print("columns:", list(df.columns))
print("dtypes:")
print(df.dtypes)

Output:

shape: (3, 2)
columns: ['a', 'b']
dtypes:
a      int64
b    float64
dtype: object

Пример 7. Удаление столбца

import pandas as pd

df = pd.DataFrame({"a": [1, 2], "b": [3, 4], "c": [5, 6]})
df2 = df.drop(columns=["b"])
print(df2)

Output:

   a  c
0  1  5
1  2  6

Подводные камни

  • df[col] = ... мутирует исходный объект — нет «снимка» данных.

  • Цепочка df[df.x > 0]["y"] = 5 может выдать SettingWithCopyWarning. Используйте df.loc[df.x > 0, "y"] = 5.

  • Запросы по столбцам через . (df.temp) работают только если имя столбца — валидный идентификатор Python без коллизий с методами.

См. также

Примечание

Лицензия и источники

Техническое описание адаптировано из официальной документации Pandas (https://pandas.pydata.org/docs/), BSD-3-Clause License. Перевод на русский, примеры и пояснения — © AlashEd Wiki.