Знакомство с пандами
Построенная на 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…