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.