【问题标题】:In Python, how do you import web data with .data extension?在 Python 中,如何导入带有 .data 扩展名的 Web 数据?
【发布时间】:2016-05-22 10:57:52
【问题描述】:

在 python 3 中,我想导入以下链接中带有 .data 扩展名的 Web 数据。导入的代码是什么?

https://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.data

【问题讨论】:

  • 这一切都取决于你接下来想用它做什么。 “机器学习数据库”建议您计划使用机器学习工具包......所以使用它的文件阅读服务。 pandas 中的数值分析也是如此。最通用的解析器是 csv,它只是将行作为列表提供给您。

标签: python data-analysis


【解决方案1】:

我的建议是:

知道数据结构,有 9 列,所以我们只需要 8 次拆分。从读取数据开始:

with open('auto-mpg.data') as fp:
    data = [line.split(maxsplit=8) for line in fp]

现在您可以处理您拥有的每个单元格。

这个功能必须做的工作:

import re

def handle(s):
    if s == '?':
        return None
    elif re.match(r'^\d+\.\d+$', s):
        return float(s)
    elif re.match(r'^\d+$', s):
        return int(s, 10)
    else:
        return s.strip().strip('"')

data = [tuple(map(handle, row)) for row in data]

把它们放在一起:

import re

def handle(s):
    if s == '?':
        return None
    elif re.match(r'^\d+\.\d+$', s):
        return float(s)
    elif re.match(r'^\d+$', s):
        return int(s, 10)
    else:
        return s.strip().strip('"')

with open('auto-mpg.data') as fp:
    data = [
        tuple(map(handle, row))
        for row in (line.split(maxsplit=8) for line in fp)
    ]

但这一切都是可能的,因为我们知道数据结构。

【讨论】:

  • 您也可以使用zip() 或类构造函数来处理每个元组并赋予字段意义。
【解决方案2】:
import pandas as pd

data = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.data')

这是你最后得到的(PyCharm 控制台上的自动 mpg 数据):

【讨论】:

  • 你有图片吗?
  • 没有。您也可以使用data.to_csv("mydata.csv", index=False, header=False)将数据导出为csv文件。
猜你喜欢
  • 2015-09-24
  • 1970-01-01
  • 2019-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-02
  • 1970-01-01
相关资源
最近更新 更多