使用 pandas 来自 .data、.names 和 .test 文件的数据帧
Dataframes from .data, .names and .test files using pandas
我正在尝试处理 成人 数据集,可在 this link.
获得
目前我被卡住了,因为我能够抓取的数据是我不完全了解的格式。因此,下载文件后,我无法正确获取包含下载文件的 pandas 数据框。
我可以使用以下链接从 UCI 下载 3 个文件:
data = 'https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data'
names = 'https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.names'
test = 'https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.test'
格式分别为.data
、.names
、.test
。我一直使用 .csv
格式工作,因此我对这些格式有点困惑。
如何获得包含训练数据(= 数据 + 名称)的 pandas 数据框和包含测试数据(= 测试 + 名称)的 pandas 数据框?
此代码无法完全运行:
train_df = pd.read_csv(r'./adult.data', header=None)
train_df.head() # WORKING (without column names)
df_names = df = pd.read_csv(r'./adult.names')
df_names.head() # ERROR
test_df = pd.read_csv(r'./adult.test')
test_df.head() # ERROR
您可以像这样使用 pandas 来实现:
import pandas as pd
# reading csv files
data = pd.read_csv('adult.data', sep=",")
print(data)
names = pd.read_csv('adult.names', sep="\t")
print(names)
test = pd.read_csv('adult.test', sep="\t")
print(test)
使用:
import pandas as pd
import re
# adult.names
with open('adult.names') as fp:
cols = []
for line in fp:
sre = re.match(r'(?P<colname>[a-z\-]+):.*\.', line)
if sre:
cols.append(sre.group('colname'))
cols.append('label')
# Python > 3.8, walrus operator
# with open('adult.names') as fp:
# cols = [sre.group('colname') for line in fp
# if (sre := re.match(r'(?P<colname>[a-z\-]+):.*\.', line))]
# cols.append('label')
options = {'header': None, 'names': cols, 'skipinitialspace': True}
# adult.data
train_df = pd.read_csv('adult.data', **options)
# adult.test
test_df = pd.read_csv('adult.test', skiprows=1, **options)
test_df['label'] = test_df['label'].str.rstrip('.')
我正在尝试处理 成人 数据集,可在 this link.
获得目前我被卡住了,因为我能够抓取的数据是我不完全了解的格式。因此,下载文件后,我无法正确获取包含下载文件的 pandas 数据框。
我可以使用以下链接从 UCI 下载 3 个文件:
data = 'https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.data'
names = 'https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.names'
test = 'https://archive.ics.uci.edu/ml/machine-learning-databases/adult/adult.test'
格式分别为.data
、.names
、.test
。我一直使用 .csv
格式工作,因此我对这些格式有点困惑。
如何获得包含训练数据(= 数据 + 名称)的 pandas 数据框和包含测试数据(= 测试 + 名称)的 pandas 数据框?
此代码无法完全运行:
train_df = pd.read_csv(r'./adult.data', header=None)
train_df.head() # WORKING (without column names)
df_names = df = pd.read_csv(r'./adult.names')
df_names.head() # ERROR
test_df = pd.read_csv(r'./adult.test')
test_df.head() # ERROR
您可以像这样使用 pandas 来实现:
import pandas as pd
# reading csv files
data = pd.read_csv('adult.data', sep=",")
print(data)
names = pd.read_csv('adult.names', sep="\t")
print(names)
test = pd.read_csv('adult.test', sep="\t")
print(test)
使用:
import pandas as pd
import re
# adult.names
with open('adult.names') as fp:
cols = []
for line in fp:
sre = re.match(r'(?P<colname>[a-z\-]+):.*\.', line)
if sre:
cols.append(sre.group('colname'))
cols.append('label')
# Python > 3.8, walrus operator
# with open('adult.names') as fp:
# cols = [sre.group('colname') for line in fp
# if (sre := re.match(r'(?P<colname>[a-z\-]+):.*\.', line))]
# cols.append('label')
options = {'header': None, 'names': cols, 'skipinitialspace': True}
# adult.data
train_df = pd.read_csv('adult.data', **options)
# adult.test
test_df = pd.read_csv('adult.test', skiprows=1, **options)
test_df['label'] = test_df['label'].str.rstrip('.')