pandas

Голосование по большинству

import pandas as pd

df = pd.read_csv('/datasets/heart_labeled.csv')

target = []
for i in range(df.shape[0]):
    #сохраняем в label три варианта метки для каждого экземпляра
    #затем агрегируем их и сохраняем в одну
    labels = df.loc[i, ['label_1', 'label_2', 'label_3']]
    true_label = int (labels.mean() > 0.5)
    target.append(true_label)
df['target'] = target 

 

Количество истинно положительных ответов TP, истинно отрицательных TN, ложных FP, FN

1. Количество истинно положительных ответов TP

import pandas as pd

target = pd.Series([0, 1, ... 0, 1, 1])
predictions = pd.Series([1, 1 ... 1, 0, 1])

((target == 1) & (predictions == 1)).sum() 

2. Количество истинно отрицательных ответов TN

((target == 0) & (predictions == 0)).sum())

3. Количество ложноположительных ответов FP

((target == 0) & (predictions == 1)).sum()

4. Количество ложноотрицательных ответов FN

((target == 1) & (predictions == 0)).sum()

Гистограмма плотности

import pandas as pd
x = pd.Series([1, 2, 3, 4, 5, 6, 2, 4])
x.hist(density=True, bins=8)

Выбросы

Подсчет количества:
print(len(data.query('col < 15')) / len(data))

Поиск групп с аномальными значениями и подсчет количества по группе, убираем группы с большим количеством выбросов:
df['too_many'] = data['col_how_many'] < 20

mean_stat = df.pivot_table(index="col1", values="too_many")

good_id = mean_stat.query('too_many < 0.2')

best_data = df.query('col1_id in @good_id.index')
print (len(df))
print (len(best_data))

Графики в Pandas, plot()

df.plot()

df.plot(title='Any Title')

df.plot(x='col2', y='col1', style='o', xlim=(0, 100), grid=True, figsize=(5, 5))

style='o' (точками)
style='x' (крестиками)
style='o-' (кружками и линиями)

xlim=(min, max)

grid для отображения сетки

figsize для ширины и высоты графика

Еще возможности.

Две гистограммы с помощью метода ax для plot на одной иллюстрации:

ax = df.plot(kind='hist', y='col1', histtype='step', linewidth=4, alpha=0.65, label='old_first')

Перевод в нижний регистр

#приводим к нижнему регистру методом .lower()
df.lower()

#в Pandas метод str.lower()
df.str.lower()

#перевод в нижний регистр с сохранением в новом столбце
df['new_col_lower'] = df['col'].str.lower()

Сортировка .sort_values(), .sort()

1. Сортировка по столбцу методом .sort_values()
- сортировка по возрастанию
df.sort_values(by = 'col')

- сортировка по убыванию
df.sort_values('col', ascending = False)

2. Сортировка по столбцу .sort()
table.sort(key=lambda row: row[1], reverse=True)

Дата и время, to_datetime()

1. Перевод в формат datetime с помощью to_datetime()

df['target_datetime']= pd.to_datetime(df['col'], format='%d.%m.%YZ%H:%M:%S')

Если дата в формате "день, месяц, год, часы, минуты, секунды",
то %d.%m.%YZ%H:%M:%S передают в аргумент format, где:

• %d — день;
• %m — номер месяца;
• %Y — четырёхзначный номер года;
• Z — стандартный разделитель даты и времени;
• %H — номер часа;
• %M — минуты ;
• %S — секунды.

Иногда %I — номер часа, если используют 12 - часовой формат.

Подсчет количества или суммы значений, count(), sum()

Примеры областей применения
count() Подсчет количества строк с определенным значением столбца
sum() Подсчет суммы значений какого-то столбца в выбранных строках

Группировка по столбцу

df.groupby('column_to_group')['column_to_show']

Страницы

Подписка на RSS - pandas