Основы панд

pandas

Знакомство с пандами

Pandas

Построенная на NumPy, библиотека Pandas предоставляет простые в использовании структуры данных и инструменты анализа данных для языка программирования Python.

Импортируйте Pandas, используя следующие соглашения

import pandas as pd

помощь

help(pd.Series.loc)

Структуры данных панд

Ряд

Одномерный размеченный массив, способный хранить данные любого типа

s = pd.Series([1, 3, 5, 7], index=['天', '地', '玄', '黄'])
# 左侧一列为索引
s

1 день земля 3 Таинственный 5 Желтый 7 тип: int64

Датафрейм (DataFrame)

Двухмерная структура данных с метками для разных типов столбцов, аналогичная таблице Excel.

Строка выше - это имя столбца

Левая колонка - индекс

- фамилия название Национальность Пол возраст
1 Джиа Сяо Ву китайский язык мужчина 3
2 Джиа Кодзиу китайский язык мужчина 1
3 Лист утенок китайский язык Женский -
data = {'姓': ['贾', '贾', '张'],
        '名': ['小武', '小久', '小鸭́'],
        '民族': ['汉', '汉', '汉'],
        '年龄': [3, 1, None]}
data

{'Фамилия': ['Цзя', 'Цзя', 'Чжан'], 'Имя': ['Сяову', 'Сяоцзю', 'Маленький дук'], «Национальность»: [«Хань», «Хань», «Хань»], 'возраст': [3, 1, нет]}

df = pd.DataFrame(data, columns=['姓', '名', '年龄'])
df
- фамилия название Национальность Пол возраст
1 Джиа Сяо Ву китайский язык мужчина 3
2 Джиа Кодзиу китайский язык мужчина 1
3 Лист утенок китайский язык Женский -

Файловый ввод/вывод

Чтение и запись CSV

pd.read_csv('file.csv', header=None, nrows=5)
df.to_csv('myDataFrame.csv')

Читать и писать Excel

pd.read_excel('file.xlsx')
pd.to_excel('dir/myDataFrame.xlsx', sheet_name='Sheet1')
xlsx = pd.ExcelFile('file.xls')
df = pd.read_excel(xlsx, 'Sheet1')

читать базу данных

from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:')
pd.read_sql("SELECT * FROM my_table;", engine)
pd.read_sql_table('my_table', engine)
pd.read_sql_query("SELECT * FROM my_table;", engine)

read_sql() — это удобная оболочка для read_sql_table() и read_sql_query().

pd.to_sql('myDf', engine)

выберите

Получать

# 获取 1 个数据
s['天']

1

# 获取 DataFrame 的子集
df[1:]

выберите, логический индекс и установите

Место расположения

Выбор одного значения по строке и столбцу

df.iloc[[0], [1]]
df.iat[0, 1]

«Сяо Ву»

Этикетка

Выберите одно значение по меткам строк и столбцов

df.loc[0, '姓']

'Джя'

df.at[0, '姓']

'Джя'

логический индекс

s[~(s > 1)]

1 день тип: int64

s[(s < -1) | (s > 2)]

земля 3 Таинственный 5 Желтый 7 тип: int64

df[df['年龄']>1]

настраивать

установить индекс 'yu' последовательности s на 9

s['宇'] = 9
s

1 день земля 3 Таинственный 5 Желтый 7 Ю 9 тип: int64

падение (падение)

удалить значение из строки (ось = 0)

s.drop(['天', '地'])

Таинственный 5 Желтый 7 Ю 9 тип: int64

удалить значение из столбца (ось = 1)

df.drop('姓', axis=1)

Сортировка и ранжирование

Сортировать по меткам осей

df.sort_index()

Сортировать по значению оси

df.sort_values(by='年龄')

Индексы отсортированы от меньшего к большему

df.rank()

Получить информацию о серии / DataFrame

Основная информация

df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],
                  index=['cobra', 'viper', 'sidewinder'],
                  columns=['max_speed', 'shield'])

(строка столбец)

df.shape

(3, 2)

индекс описания

df.index

Index(['cobra', 'viper', 'sidewinder'], dtype='object')

Описать информацию столбца DataFrame

df.columns

Index(['max_speed', 'shield'], dtype='object')

Информация о кадре данных

df.info()

Количество не-NA значений

df.count()

max_speed 3 shield 3 dtype: int64

Резюме

сумма

df.sum()

max_speed 12 shield 15 dtype: int64

Совокупное значение

df.cumsum()

минимум

df.min()

max_speed 1 shield 2 dtype: int64

максимальное значение

df.max()

max_speed 7 shield 8 dtype: int64

минимальное значение индекса

df.idxmin()

max_speed cobra shield cobra dtype: object

максимальное значение индекса

df.idxmax()

max_speed sidewinder shield sidewinder dtype: object

Сводные статистические данные

df.describe()

均值

```python
df.mean()

max_speed 4.0 shield 5.0 dtype: float64

медиана

df.median()

max_speed 4.0 shield 5.0 dtype: float64

применить функцию

f = lambda x: x*2

применить функцию

df.apply(f)

Применить функцию поэлементно

df.applymap(f)

выравнивание данных

Внутреннее выравнивание данных

Значение NA вводится в непересекающихся индексах

s3 = pd.Series([7, -2, 3], index=['玄', '黄', '宇'])
s + s3

молотый NaN дни NaN Ю 12.0 Сюань 12.0 Желтый 5.0 тип: float64

Арифметические операции для методов заполнения

Внутреннее выравнивание данных, выполненное само по себе с помощью методов заполнения

s.add(s3, fill_value=0)

Земля 3.0 день 1.0 Ю 12.0 Сюань 12.0 Желтый 5.0 тип: float64

s.sub(s3, fill_value=2)

Земля 1.0 дней -1,0 Ю 6.0 Суан -2,0 Желтый 9.0 тип: float64

s.div(s3, fill_value=4)

Земля 0.750000 день 0.250000 Ю 3.000000 Сюань 0,714286 желтый -3.500000 тип: float64

s.mul(s3, fill_value=3)

Земля 9.0 День 3.0 Ю 27,0 Суан 35,0 Желтый -14,0 тип: float64

ipynb См.:GitHub.com/Журнал разработчиков iOS/A…