Pandas read_csv() 与示例

在 Pandas 中导入 CSV

在 TensorFlow 教程中,您将使用成人数据集。它通常用于分类任务。它可在此 URL 中找到 https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data

数据以 CSV 格式存储。此数据集包括八个分类变量:

该数据集包括8个分类变量:

  • 工人阶级
  • 教育
  • 婚姻
  • 占用
  • 关系
  • 种族
  • 性别
  • 祖国

以及6个连续变量:

  • 年龄
  • 风车
  • 教育编号
  • 资本收益
  • 资本损失
  • hours_week

Pandas read_csv() 方法

要导入 CSV 数据集,可以使用对象 pd.read_csv()。里面的基本参数是:

Pandas read_csv() 语法

pandas.read_csv(filepath_or_buffer,sep=', ',`names=None`,`index_col=None`,`skipinitialspace=False`)
  • 文件路径或缓冲区:包含数据的路径或 URL
  • 九月=', ':定义要使用的分隔符
  • `names=None`:为列命名。如果数据集有十列,则需要传递十个名称
  • `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()
标签 年龄 风车 教育编号 资本收益 资本损失 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'])['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 之后创建一个图。一种方法是在分组后使用图。

为了创建更出色的图,您将在 mean() 之后使用 unstack(),以便拥有相同的多级索引,或者将收入低于 50k 和高于 50k 的值连接起来。在这种情况下,图将有两组,而不是 14 组(2*7)。

如果你使用 Jupyter 笔记本,确保添加 %matplotlib inline,否则不会显示任何图

%matplotlib inline
df_plot = df_train.groupby(['label', 'marital'])['capital_gain'].mean().unstack()
df_plot

Pandas groupby() 方法示例

结语

  • 要导入 CSV 数据集 熊猫,您可以使用对象pd.read_csv()。
  • groupby() 方法可以帮助您按组汇总数据。
  • 您还可以按多个列进行分组。例如,您可以根据家庭类型和婚姻状况获得最大资本收益。