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] # Выбор первого датафрейма
# Чтение данных из 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
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))
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.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['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.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')
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 = 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
}
]
{
"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()
# Чтение данных 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
Другие расширения