Импортиране на CSV данни с помощта на Pandas.read_csv ()

Съдържание:

Anonim

В този урок ще научите:

  • Импортиране на 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