В този урок ще научите:
- Импортиране на CSV
- Групирай по
Импортиране на CSV
По време на урока за TensorFlow ще използвате набора от данни за възрастни. Често се използва с класификационна задача. Той е достъпен в този URL адрес https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data
Данните се съхраняват във формат CSV. Този набор от данни включва осем категорични променливи:
Този набор от данни включва осем категорични променливи:
- работен клас
- образование
- брачен
- професия
- връзка
- раса
- секс
- native_country
освен това шест непрекъснати променливи:
- възраст
- fnlwgt
- номер на образованието
- capital_gain
- загуба на капитал
hours_week
За да импортирате CSV набор от данни, можете да използвате обекта pd.read_csv (). Основният аргумент вътре е:
Синтаксис:
pandas.read_csv(filepath_or_buffer,sep=', ',`names=None`,`index_col=None`,`skipinitialspace=False`)
- filepath_or_buffer: Път или URL с данните
- sep = ',': Определете разделителя, който да използвате
- `names = None`: Наименувайте колоните. Ако наборът от данни има десет колони, трябва да предадете десет имена
- `index_col = None`: Ако да, първата колона се използва като индекс на ред
- `skipinitialspace = False`: Пропускане на интервали след разделителя.
За повече информация относно readcsv (), моля, проверете официалната документация
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html.
Обмислете следния пример
## Import csvimport pandas as pd## Define path dataCOLUMNS = ['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)
Групирай по
Лесен начин да видите данните е да използвате метода groupby. Този метод може да ви помогне да обобщите данните по групи. По-долу е даден списък с наличните методи с groupby:
- брой: брои
- мин: мин
- макс: макс
- означава: означава
- медиана: медиана
- стандартно отклонение: sdt
- и т.н.
Вътре в groupby () можете да използвате колоната, която искате да приложите метода.
Нека да разгледаме едно групиране с набора от данни за възрастни. Ще получите средната стойност на всички непрекъснати променливи по вид приходи, т.е. над 50 000 или по-малко от 50 000
df_train.groupby(['label']).mean()
възраст | fnlwgt | номер на образованието | capital_gain | загуба на капитал | hours_week | |
етикет | ||||||
<= 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<=50K 17>50K 19Name: age, dtype: int64
Можете също да групирате по няколко колони. Например можете да получите максималната капиталова печалба според типа на домакинството и семейното положение.
df_train.groupby(['label', 'marital'])['capital_gain'].max()label marital<=50K Divorced 34095Married-AF-spouse 2653Married-civ-spouse 41310Married-spouse-absent 6849Never-married 34095Separated 7443Widowed 6849>50K Divorced 99999Married-AF-spouse 7298Married-civ-spouse 99999Married-spouse-absent 99999Never-married 99999Separated 99999Widowed 99999Name: capital_gain, dtype: int64
Можете да създадете парцел след група от. Един от начините да го направите е да използвате парцел след групирането.
За да създадете по-отличен парцел, ще използвате unstack () след mean (), така че да имате същия индекс на много нива, или да се присъедините към стойностите с приходи по-ниски от 50k и над 50k. В този случай сюжетът ще има две групи вместо 14 (2 * 7).
Ако използвате Jupyter Notebook, не забравяйте да добавите% matplotlib вграден, в противен случай няма да се покаже графика
%matplotlib inlinedf_plot = df_train.groupby(['label', 'marital'])['capital_gain'].mean().unstack()df_plot