Pandas: общие функции

Ниже перечислены некоторые часто используемые функции Pandas и примеры их использования:

Чтение данных

ФункцияОписание
pd.read_csv(filename)Чтение CSV-файлов;
pd.read_excel(filename)Чтение файлов Excel;
pd.read_sql(query, connection_object)Чтение данных из базы данных SQL;
pd.read_json(json_string)Чтение данных из строки JSON;
pd.read_html(url)Чтение данных из HTML-страниц.

Пример

import pandas as pd

# Чтение данных из CSV-файла
df = pd.read_csv('data.csv')

# Чтение данных из файла Excel
df = pd.read_excel('data.xlsx')

# Чтение данных из базы данных SQL
import sqlite3
conn = sqlite3.connect('database.db')
df = pd.read_sql('SELECT * FROM table_name', conn)

# Чтение данных из строки JSON
json_string = '{"name": "John", "age": 30, "city": "New York"}'
df = pd.read_json(json_string)

# Чтение данных со страницы HTML
url = 'https://www.example.com'
dfs = pd.read_html(url)
df = dfs[0] # Выбор первого датафрейма

Просмотр данных

ФункцияОписание
df.head(n)Отобразить первые n строк данных;
df.tail(n)Отобразить последние n строк данных;
df.info()Отобразить информацию о данных, включая имена столбцов, типы данных, пропущенные значения и т. д.;
df.describe()Отобразить базовую статистическую информацию о данных, включая среднее, дисперсию, максимум, минимум и т. д.;
df.shapeОтобразить количество строк и столбцов данных.

Пример

# Отобразить первые пять строк данных
df.head()

# Отобразить последние пять строк данных
df.tail()

# Показать информацию о данных
df.info()

# Показать основную статистическую информацию
df.describe()

# Показать количество строк и столбцов данных
df.shape

Пример

import pandas as pd

data = [
    {"name": "Google", "likes": 25, "url": "https://www.google.com"},
    {"name": "Example", "likes": 30, "url": "https://www.example.com"},
    {"name": "Taobao", "likes": 35, "url": "https://www.taobao.com"}
]

df = pd.DataFrame(data)
# Отобразить первые две строки данных
print(df.head(2))
# Отобразить последнюю строку данных
print(df.tail(1))

Вывод приведённых выше примеров:

     name  likes                     url
0  Google     25  https://www.google.com
1  Example     30  https://www.example.com
     name  likes                     url
2  Taobao     35  https://www.taobao.com

Очистка данных

ФункцияОписание
df.dropna()Удалить строки или столбцы, содержащие пропущенные значения;
df.fillna(value)Заменить пропущенные значения указанными значениями;
df.replace(old_value, new_value)Заменить указанные значения новыми значениями;
df.duplicated()Проверить наличие дублирующихся данных;
df.drop_duplicates()Удалить дублирующиеся данные.

Пример

# Удалить строки или столбцы, содержащие пропущенные значения
df.dropna()

# Заменить пропущенные значения указанными значениями
df.fillna(0)

# Заменить указанные значения новыми значениями
df.replace('old_value', 'new_value')

# Проверить, есть ли дублирующиеся данные
df.duplicated()

# Удалить дублирующиеся данные
df.drop_duplicates()

Выбор и срезы данных

ФункцияОписание
df[column_name]Выбрать указанные столбцы;
df.loc[row_index, column_name]Выбрать данные по метке;
df.iloc[row_index, column_index]Выбрать данные по позиции;
df.ix[row_index, column_name]Выбрать данные по метке или позиции;
df.filter(items=[column_name1, column_name2])Выбрать указанные столбцы;
df.filter(regex='regex')Выбрать столбцы, имена которых соответствуют регулярному выражению;
df.sample(n)Случайным образом выбрать n строк данных.

Пример

# Выбрать указанные столбцы
df['column_name']

# Выбрать данные по метке
df.loc[row_index, column_name]

# Выбрать данные по позиции
df.iloc[row_index, column_index]

# Выбрать данные по метке или позиции
df.ix[row_index, column_name]

# Выбрать указанные столбцы
df.filter(items=['column_name1', 'column_name2'])

# Выбрать столбцы, имена которых соответствуют регулярному выражению
df.filter(regex='regex')

# Случайно выбрать n строк данных
df.sample(n=5)

Сортировка данных

ФункцияОписание
df.sort_values(column_name)Сортировка по значениям указанного столбца;
df.sort_values([column_name1, column_name2], ascending=[True, False])Сортировка по значениям нескольких столбцов;
df.sort_index()Сортировка по индексу.

Пример

# Сортировка по значениям указанного столбца
df.sort_values('column_name')

# Сортировка по значениям нескольких столбцов
df.sort_values(['column_name1', 'column_name2'], ascending=[True, False])

# Сортировать по индексу
df.sort_index()

Группировка и агрегация данных

ФункцияОписание
df.groupby(column_name)Группировка по указанному столбцу;
df.aggregate(function_name)Выполнить операции агрегирования над сгруппированными данными;
df.pivot_table(values, index, columns, aggfunc)Создать сводную таблицу.

Пример

# Группировка по указанному столбцу
df.groupby('column_name')

# Выполнить операции агрегации над сгруппированными данными
df.aggregate('function_name')

# Создать сводную таблицу
df.pivot_table(values='value', index='index_column', columns='column_name', aggfunc='function_name')

Объединение данных

ФункцияОписание
pd.concat([df1, df2])Объединить несколько датафреймов по строкам или столбцам;
pd.merge(df1, df2, on=column_name)Объединить два датафрейма по указанным столбцам.

Пример

# Объединить несколько датафреймов по строкам или столбцам
df = pd.concat([df1, df2])

# Объединить два датафрейма по указанным столбцам
df = pd.merge(df1, df2, on='column_name')

Выбор и фильтрация данных

ФункцияОписание
df.loc[row_indexer, column_indexer]Выбор строк и столбцов по метке.
df.iloc[row_indexer, column_indexer]Выбор строк и столбцов по позиции.
df[df['column_name'] > value]Выбор строк в столбце, удовлетворяющих условию.
df.query('column_name > value')Используйте строковое выражение для выбора строк в столбце, удовлетворяющих условию.

Статистика и описание данных

ФункцияОписание
df.describe()Вычислить базовую статистическую информацию, например среднее, стандартное отклонение, минимум, максимум и т. д.
df.mean()Вычислить среднее значение для каждого столбца.
df.median()Вычислить медиану для каждого столбца.
df.mode()Вычислить моду для каждого столбца.
df.count()Вычислить количество непропущенных значений в каждом столбце.

Пример

Предположим, у нас есть следующие данные JSON, сохранённые в файлеdata.json:

файл data.json

[
  {
    "name": "Алиса",
    "age": 25,
    "gender": "женский",
    "score": 80
  },
  {
    "name": "Боб",
    "age": null,
    "gender": "мужской",
    "score": 90
  },
  {
    "name": "Чарли",
    "age": 30,
    "gender": "мужской",
    "score": null
  },
  {
    "name": "Дэвид",
    "age": 35,
    "gender": "мужской",
    "score": 70
  }
]

Мы можем использовать Pandas для чтения данных JSON и выполнять такие операции, как очистка и обработка данных, выбор и фильтрация данных, статистика и описание данных, следующим образом:

Пример

import pandas as pd

# Чтение данных JSON
df = pd.read_json('data.json')

# Удалить пропущенные значения
df = df.dropna()

# Заполнить пропущенные значения указанными значениями
df = df.fillna({'age': 0, 'score': 0})

# Переименовать имена столбцов
df = df.rename(columns={'name': 'Name', 'age': 'age', 'gender': 'Gender', 'score': 'Score'})

# Сортировать по оценке
df = df.sort_values(by='Score', ascending=False)

# Сгруппировать по полу и вычислить средний возраст и среднюю оценку
grouped = df.groupby('Gender').agg({'age': 'mean', 'Score': 'mean'})

# Выберите строки, где score больше или равно 90, и оставьте только столбцы name и score
df = df.loc[df['Score'] >= 90, ['Name', 'Score']]

# Вычислить основную статистическую информацию по каждому столбцу
stats = df.describe()

# Вычислить среднее значение каждого столбца
mean = df.mean()

# Вычислить медиану для каждого столбца
median = df.median()

# Вычислить моду для каждого столбца
mode = df.mode()

# Вычислить количество непропущенных значений в каждом столбце
count = df.count()

Результат вывода следующий:

# df
   姓名  年龄 性别  成绩
1  Bob   0  male  90

# grouped
             年龄  成绩
性别                
female  25.000000  80
male    27.500000  80

# stats
         成绩
count   1.0
mean   90.0
std     NaN
min    90.0
25%    90.0
50%    90.0
75%    90.0
max    90.0

# mean
成绩    90.0
dtype: float64

# median
成绩    90.0
dtype: float64

# mode
    姓名    成绩
0  Bob  90.0

# count
姓名    1
成绩    1
dtype: int64
Другие расширения