Эта статья будет очень полезна для читателей, которые ищут в одном месте все коды и синтаксис манипулирования данными. В этой статье для работы с данными использовалась библиотека «PANDAS». Pandas - популярный инструмент анализа данных Python. Он предоставляет простые в использовании и высокоэффективные структуры данных. Эти структуры данных имеют дело с числовыми или помеченными данными, хранящимися в форме таблиц.

Темы, затронутые в этой статье:

1. Набор данных

Продажи жилья в США, 1963–2016: национальные и региональные данные о количестве проданных и выставленных на продажу новых односемейных домов. Также представлены национальные данные о медианных и средних ценах, количестве проданных и выставленных на продажу домов с разбивкой по стадиям строительства и другие статистические данные. Из переписи населения США, индикаторы экономических временных рядов. Данные предоставлены Enigma.io Министерством торговли США.

Набор данных состоит из 20 404 строк и 20 столбцов.

2. Поместите данные в DataFrame.

Загрузить DataFrame из файла CSV

df = pd.read_csv(‘file.csv’)
df = pd.read_csv(‘file.csv’, header=0, index_col=0, quotechar=’”’,sep=’:’, na_values = [‘na’, ‘-‘, ‘.’, ‘’])

3. Сохранение DataFrame

Сохранение DataFrame в файл CSV

df.to_csv(‘name.csv’, encoding=’utf-8')

Сохранение DataFrame в словаре Python

dictionary = df.to_dict()

Сохранение DataFrame в строку Python

string = df.to_string()

4. Работа со всем DataFrame

Взгляните на содержимое DataFrame

df.info()

Сводка статистики столбца

df.describe()

Голова

df.head(n)

Хвост

df.tail(n)

Форма (количество строк, количество столбцов)

df.shape

5. Работа со строками - часть 1

Сохранение строк

df = df[df['cat_code']== 'SOLD']

Удаление строк

df = df[(df['dt_code']!= 'MEDIAN') & (df['dt_code']!= 'NOTSTD') &
(df['dt_code']!= 'TOTAL')]

Удаление нулевых значений (NaN)

df = df[pd.notnull(df['dt_code'])]

6. Работа со столбцами - часть 1

Удаление столбцов

df = df.drop(['et_idx','et_code','et_desc','et_unit'], axis=1)

Сохранение столбцов

df = df[['per_name','dt_code','dt_desc','dt_unit','val']]

Добавление новых столбцов в DataFrame

df['dt_year'] = df['per_name'].str[0:4]

7. Пользовательские функции

Создание нового столбца с помощью функций

def price (x):
   if x.dt_unit == "K": return(x.val*1000)
   else: return(x.val)
   df['dt_val'] = df[['dt_unit','val']].apply(price, axis=1)

8. Очистка набора данных

Создание трех наборов данных

df_UNDERC = df[df['dt_code']==’UNDERC’]
df_COMPED = df[df['dt_code']==’COMPED’]
df_AVERAG = df[df['dt_code']==’AVERAG’]

Сохранение столбцов

df_UNDERC = df_UNDERC[['per_name','dt_year','dt_val']]
df_COMPED = df_COMPED[['per_name','dt_year','dt_val']]
df_AVERAG = df_AVERAG[['per_name','dt_year','dt_val']]

Переименование столбцов

df_UNDERC = df_UNDERC.rename(columns={'dt_val':'UNDERC'})
df_COMPED = df_COMPED.rename(columns={'dt_val':'COMPED'})
df_AVERAG = df_AVERAG.rename(columns={'dt_val':'AVERAG'})

9. Объединение / объединение DataFrames и Groupby

Объединить столбцы

df_new = pd.merge(left=df_AVERAG, right=df_COMPED, how='left',
left_on='per_name',right_on='per_name')
df_new = pd.merge(left=df_new, right=df_UNDERC, how='left',
left_on='per_name',right_on='per_name')

Группировка - применение функции агрегирования

gb = df_new.groupby(['dt_year'])['AVERAG','COMPED','UNDERC'].agg(np.mean)

10. Графики и статистика

Однолинейный график

gb['AVERAG'].plot.line(color= 'green')

Многолинейный график

gb[['COMPED','UNDERC']].plot.line()

Корреляция

gb.corr()

Квантили

quants = [0.05, 0.25, 0.5, 0.75, 0.95]
df_new = gb.quantile(quants)

Гистограмма

import matplotlib.pyplot as plt
count, bins = np.histogram(gb['AVERAG'],bins=5)
plt.hist(gb['AVERAG'],bins=5,color='gray',edgecolor='white')

11. Работа со строками - часть 2

Сортировка значений строк DataFrame

gb = gb.sort_values(by='AVERAG',ascending=False)

Сортировка DataFrame по индексу строки

gb = gb.sort_index()

Выберите фрагмент строк по целочисленной позиции

gb = gb[32:]

12. Работа со столбцами - часть 2

Найти метку индекса для минимальных / максимальных значений в столбце

print(gb['AVERAG'].idxmin())
print(gb['AVERAG'].idxmax())

Математика во всем фрейме данных

print(gb.count())
print(gb.mean())

Распространенные методы для всего столбца

print(gb['AVERAG'].count())
print(gb['AVERAG'].mean())
print(gb['AVERAG'].describe())

Распространенные поэлементные методы

s = gb['AVERAG'].fillna(0)
s = df_new['AVERAG'].cumsum()

Применение к столбцам числовых математических функций

df_new['log_data'] = np.log(df_new['AVERAG'])
df_new['rounded'] = np.round(df_new['log_data'], 2)

13. Работа с ячейками

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

print('AVG price in 1996: ',round(gb.loc['1996','AVERAG'],2))
print('AVG price in 2006: ',round(gb.loc['2006','AVERAG'],2))
print('AVG price in 2016: ',round(gb.loc['2016','AVERAG'],2))

Установка ячейки по заголовкам строк и столбцов

gb.loc['1976','AVERAG'] = -1000

Выбор и нарезка ярлыков

df_new = gb.loc['2007':'2016', 'AVERAG':'UNDERC']

Выбор строки

print(gb.loc['2016'])

Выбор столбца

print(gb['AVERAG'])

14. Работа с пропущенными значениями и строками

Удалить все строки с NaN

df = df.dropna()

Удалить все столбцы с NaN

df = df.dropna(axis=1)

Удалите все строки, в которых NaN встречается более двух раз

df=df.dropna(thresh=2)

Отбросьте все строки, в которых указано NaN, в специальный столбец

df = df.dropna(df['AVERAG'].notnull())

Перекодирование всех недостающих данных

df.fillna(0, inplace=True)

Перекодирование отсутствующих данных в специальный столбец

s = df['AVERAG'].fillna(0)

Работа со строками

s = df['col'].str.lower()
s = df['col'].str.upper()
s = df['col'].str.len()
s = df['col'].str.replace('old', 'new')

15. Сводные таблицы

Сводная точка

df_pt = pd.pivot_table(df,index='dt_year',columns='dt_code',
values='dt_val',aggfunc=np.mean)

Голова

df_pt.head()

Хвост

df_pt.tail()