Эта статья будет очень полезна для читателей, которые ищут в одном месте все коды и синтаксис манипулирования данными. В этой статье для работы с данными использовалась библиотека «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()