Pandas read_csv() с пример
Импортирайте CSV в Pandas
По време на урока за TensorFlow ще използвате набора от данни за възрастни. Често се използва с класификационна задача. Наличен е в този URL https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data
Данните се съхраняват в CSV формат. Този набор от данни включва осем категорични променливи:
Този набор от данни включва 8 категорични променливи:
- работен клас
- образование
- брачен
- окупация
- връзка
- раса
- секс
- родна_страна
И 6 непрекъснати променливи:
- възраст
- fnlwgt
- образование_номер
- капиталова_печалба
- капиталова_загуба
- часове_седмица
Метод Pandas read_csv().
За да импортирате CSV набор от данни, можете да използвате обекта pd.read_csv(). Основният аргумент вътре е:
Синтаксис на Pandas read_csv().
pandas.read_csv(filepath_or_buffer,sep=', ',`names=None`,`index_col=None`,`skipinitialspace=False`)
- filepath_or_buffer: Път или URL с данните
- sep=', ': Определете разделителя, който да използвате
- `имена=Няма`: Назовете колоните. Ако наборът от данни има десет колони, трябва да подадете десет имена
- `index_col=Няма`: Ако да, първата колона се използва като индекс на ред
- `skipinitialspace=False`: Пропуснете интервали след разделител.
За повече информация относно read_csv(), моля, проверете официалната документация:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html
Pandas read_csv() Пример
## Import csv
import pandas as pd
## Define path data
COLUMNS = ['age','workclass', 'fnlwgt', 'education', 'education_num', 'marital',
'occupation', 'relationship', 'race', 'sex', 'capital_gain', 'capital_loss',
'hours_week', 'native_country', 'label']
PATH = "https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data"
df_train = pd.read_csv(PATH,
skipinitialspace=True,
names = COLUMNS,
index_col=False)
df_train.shape
Изход:
(32561, 15)
Метод Pandas groupby().
Лесен начин да видите данните е да използвате метода groupby. Този метод може да ви помогне да обобщите данните по групи. По-долу е даден списък с методи, налични с метода groupby():
- брои: брои
- мин.: мин
- макс.: макс
- средно: средно
- медиана: медиана
- стандартно отклонение: sdt
- и т.н.
Вътре в groupby() можете да използвате колоната, към която искате да приложите метода.
Нека да разгледаме едно групиране с набора от данни за възрастни. Ще получите средната стойност на всички непрекъснати променливи по вид приходи, т.е. над 50k или под 50k:
df_train.groupby(['label']).mean()
| етикет | възраст | fnlwgt | образование_номер | капиталова_печалба | капиталова_загуба | часове_седмица |
|---|---|---|---|---|---|---|
| <= 50K | 36.783738 | 190340.86517 | 9.595065 | 148.752468 | 53.142921 | 38.840210 |
| > 50K | 44.249841 | 188005.00000 | 11.611657 | 4006.142456 | 195.001530 | 45.473026 |
Можете да получите минималната възраст според вида на домакинството:
df_train.groupby(['label'])['age'].min() label <=50K 17 >50K 19 Name: age, dtype: int64
Можете също да групирате по няколко колони. Например, можете да получите максимална капиталова печалба според вида на домакинството и семейното положение.
df_train.groupby(['label', 'marital'])['capital_gain'].max()
label marital
<=50K Divorced 34095
Married-AF-spouse 2653
Married-civ-spouse 41310
Married-spouse-absent 6849
Never-married 34095
Separated 7443
Widowed 6849
>50K Divorced 99999
Married-AF-spouse 7298
Married-civ-spouse 99999
Married-spouse-absent 99999
Never-married 99999
Separated 99999
Widowed 99999
Name: capital_gain, dtype: int64
Можете да създадете сюжет, следвайки groupby. Един от начините да го направите е да използвате графика след групирането.
За да създадете по-отличен график, ще използвате unstack() след mean(), така че да имате един и същ многостепенен индекс или да обедините стойностите по приходи под 50k и над 50k. В този случай парцелът ще има две групи вместо 14 (2*7).
Ако използвате Jupyter Ноутбук, не забравяйте да добавите %matplotlib вградено, в противен случай няма да се покаже диаграма
%matplotlib inline df_plot = df_train.groupby(['label', 'marital'])['capital_gain'].mean().unstack() df_plot
Oбобщение
- За да импортирате набор от CSV данни в Пандите, можете да използвате обекта pd.read_csv().
- Методът groupby() може да ви помогне да обобщите данните по групи.
- Можете също да групирате по няколко колони. Например, можете да получите максимална капиталова печалба според вида на домакинството и семейното положение.

