Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何打开在线csv文件?_Python_Csv - Fatal编程技术网

Python 如何打开在线csv文件?

Python 如何打开在线csv文件?,python,csv,Python,Csv,以下是csv文件的名称。问题是我不知道如何打开它并对这组数据做些什么 from urllib.request import urlopen url = 'http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv' x = urlopen(url) data = x.read() 我想自己创建列索引: names = [] firstLine = True for line

以下是csv文件的名称。问题是我不知道如何打开它并对这组数据做些什么

from urllib.request import urlopen

url = 'http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv'
x = urlopen(url)
data = x.read()
我想自己创建列索引:

names = []
firstLine = True
for line in data:
    if firstLine:
        names = line.strip().split(';')
        firstLine = False

但是,名称的结果是[''”],这不是我所期望的。

您可以使用pandas:

import pandas as pd
url = 'http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv'
df = pd.read_csv(url, sep=';')

您可以使用pandas进行以下操作:

import pandas as pd
url = 'http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv'
df = pd.read_csv(url, sep=';')
当您读取文件(
data=x.read()
)时,您将获得二进制对象,您只需将其解码为utf-8:

text = data.decode('utf-8')
然后您需要使用StringIO和csv来读取此数据:

import csv, io
reader = csv.reader(io.StringIO(text), csv.excel)
现在,读取器只是一个列表,其中包含文件中的数据。

当您读取文件(
data=x.read()
)时,您得到的是二进制对象,您只需将其解码为utf-8:

text = data.decode('utf-8')
然后您需要使用StringIO和csv来读取此数据:

import csv, io
reader = csv.reader(io.StringIO(text), csv.excel)

现在,读卡器只是一个列表,其中包含您的数据,这些数据来自文件和
csv
,可以按如下方式完成:

from urllib.request import urlopen
import csv
import io

url = 'http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv'
x = urlopen(url)
csv_data = x.read().decode('utf-8')
csv_input = csv.reader(io.StringIO(csv_data), delimiter=';')
header = next(csv_input)

print("Header is:", header)
data = list(csv_input)

# Display start of data
for row in data[:5]:
    print(row)
这将给你:

Header is: ['fixed acidity', 'volatile acidity', 'citric acid', 'residual sugar', 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide', 'density', 'pH', 'sulphates', 'alcohol', 'quality']
['7.4', '0.7', '0', '1.9', '0.076', '11', '34', '0.9978', '3.51', '0.56', '9.4', '5']
['7.8', '0.88', '0', '2.6', '0.098', '25', '67', '0.9968', '3.2', '0.68', '9.8', '5']
['7.8', '0.76', '0.04', '2.3', '0.092', '15', '54', '0.997', '3.26', '0.65', '9.8', '5']
['11.2', '0.28', '0.56', '1.9', '0.075', '17', '60', '0.998', '3.16', '0.58', '9.8', '6']
['7.4', '0.7', '0', '1.9', '0.076', '11', '34', '0.9978', '3.51', '0.56', '9.4', '5']

使用
csv
可以按如下方式进行:

from urllib.request import urlopen
import csv
import io

url = 'http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv'
x = urlopen(url)
csv_data = x.read().decode('utf-8')
csv_input = csv.reader(io.StringIO(csv_data), delimiter=';')
header = next(csv_input)

print("Header is:", header)
data = list(csv_input)

# Display start of data
for row in data[:5]:
    print(row)
这将给你:

Header is: ['fixed acidity', 'volatile acidity', 'citric acid', 'residual sugar', 'chlorides', 'free sulfur dioxide', 'total sulfur dioxide', 'density', 'pH', 'sulphates', 'alcohol', 'quality']
['7.4', '0.7', '0', '1.9', '0.076', '11', '34', '0.9978', '3.51', '0.56', '9.4', '5']
['7.8', '0.88', '0', '2.6', '0.098', '25', '67', '0.9968', '3.2', '0.68', '9.8', '5']
['7.8', '0.76', '0.04', '2.3', '0.092', '15', '54', '0.997', '3.26', '0.65', '9.8', '5']
['11.2', '0.28', '0.56', '1.9', '0.075', '17', '60', '0.998', '3.16', '0.58', '9.8', '6']
['7.4', '0.7', '0', '1.9', '0.076', '11', '34', '0.9978', '3.51', '0.56', '9.4', '5']

以下代码获取csv文件并将其保存到当前目录中

from urllib.request import urlretrieve

url = 'http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv'

urlretrieve(url, 'wine.csv')

然后你可以在一个数据框中读取它

df = pd.read_csv('wine.csv', delimiter=';')

以下代码获取csv文件并将其保存到当前目录中

from urllib.request import urlretrieve

url = 'http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv'

urlretrieve(url, 'wine.csv')

然后你可以在一个数据框中读取它

df = pd.read_csv('wine.csv', delimiter=';')

非常感谢。但是使用pandas会自动将第一行作为索引,而我更愿意自己做。您可以添加参数
header=None
,以确保第一行不会成为列名(而不是索引)棒极了,它可以工作。虽然我正在寻找自己的方法来实现相同的输出,但熊猫仍然是处理数据的最佳选择。请欣赏。但是使用熊猫会自动将第一行作为索引,而我更愿意自己做。您可以添加参数
header=None
,以确保第一行行未成为列名(不是索引)太棒了,它很管用。虽然我正在寻找自己的方法来实现相同的输出,但熊猫仍然是处理数据的最佳选择。我以前尝试过这个方法,但是如果我想提取第一行作为列索引,下一步该怎么办?当我运行代码时,它显示“list”对象没有“split”属性。是的,因为list对象没有这个属性方法是,只能拆分字符串。['6.3;0.51;0.13;2.3;0.076;29;40;0.99574;3.42;0.75;11;6']['5.9;0.645;0.12;2;0.075;32;44;0.99547;3.57;0.71;10.2;5']['6;0.31;0.47;3.6;0.067;18;42;0.99549;0.66;11']我以前尝试过这个方法,但是如果我想提取第一行作为列索引,下一步该怎么做?当我运行代码时,它显示“list”对象没有“split”属性。是的,因为list对象没有这个方法,只能拆分字符串。[['6.3;0.51;0.13;2.3;0.076;29;40;0.99574;3.42;0.75;11;6']['5.9;0.645;0.12;2;0.075;32;44;0.99547;3.57;0.71;10.2;5'] ['6;0.31;0.47;3.6;0.067;18;42;0.99549;3.39;0.66;11;6'] ]