如何通过特定代码将CSV文件中的数据导入Python

bbuxkriu  于 2023-06-27  发布在  Python
关注(0)|答案(4)|浏览(123)

我有一个文件data.csv,其数据内容如下:

142.52  114.28  126.26  152.39  144.66  85.77   125.67  102.87  103.86  114.50
1   108.98  136.10  121.75  108.52  115.19  112.91  136.93  101.75  112.48  88.32
2   53.15   119.53  123.89  90.64   152.98  75.89   106.95  102.13  137.73  136.42
3   109.21  113.83  87.62   65.00   98.80   109.24  131.47  130.89  97.98   99.74
4   84.29   76.61   70.68   146.38  95.45   96.93   80.07   122.09  72.59   101.60
5   87.46   114.01  95.43   81.56   105.42  114.87  107.38  112.26  92.87   98.49
6   92.08   98.56   89.17   70.27   109.67  97.68   72.25   115.58  87.22   107.08
7   121.09  108.67  129.59  80.44   114.33  91.82   87.97   94.02   99.55   107.16
8   81.88   124.65  115.64  74.20   136.81  145.24  130.40  102.28  83.84   127.83
9   97.65   131.30  110.31  126.22  113.38  120.63  106.22  142.97  108.63  114.32

我更喜欢只使用Python的内置库,例如。string方法split和strip,以及list方法append以获得预期的结果。
预期输出:
文件中包含的浮点值的一维列表。

['142.52',
 '114.28',
 '126.26',
 '152.39',
 '144.66',
 '85.77',
 '125.67',
 '102.87',
 '103.86',
 '114.50',
 '108.98',
 '136.10',
 '121.75',
 '108.52',
 '115.19',
 '112.91',
 '136.93',
 '101.75',
 '112.48',
 '88.32',
 '…']

该过程应考虑不同的CSV分隔符。

gab6jxml

gab6jxml1#

你应该使用pandas做导入和处理 Dataframe 。

import pandas as pd
data = pd.read_csv("data.csv")

Pandas dataframes可以做很多有趣的事情,并且与其他库(如用于矢量化进程的numpy)以及机器学习库(如sklearn,xgboost,catboost等)配合使用。

pb3skfrl

pb3skfrl2#

如果文件中没有行号,那么使用Python的标准库,简单的解决方案可能是这样的:

data = []
with open('data.csv') as input_file:
    for row in input_file:
        for value in row.strip().split():
            data.append(float(value))

print(data)
  • 1:打开文件
  • 2:循环文件中的行
  • 3:Strip()从文件的开头和结尾删除不可打印的字符,如换行符
  • 4:Split()将剥离的行拆分成一个“列表”
  • 5:循环拆分列表并将转换为浮点数的值追加到数据列表
iovurdzv

iovurdzv3#

我找到了一个方法来处理它就像一个列表
你可以使用numpy ndarray来读取它
然后删除第一列
并将所有元素展平为列表
我使用的文件在这里,你应该将其保存为txt文件或csv文件

0   142.52  114.28  126.26  152.39  144.66  85.77   125.67  102.87  103.86  114.50
1   108.98  136.10  121.75  108.52  115.19  112.91  136.93  101.75  112.48  88.32
2   53.15   119.53  123.89  90.64   152.98  75.89   106.95  102.13  137.73  136.42
3   109.21  113.83  87.62   65.00   98.80   109.24  131.47  130.89  97.98   99.74
4   84.29   76.61   70.68   146.38  95.45   96.93   80.07   122.09  72.59   101.60
5   87.46   114.01  95.43   81.56   105.42  114.87  107.38  112.26  92.87   98.49
6   92.08   98.56   89.17   70.27   109.67  97.68   72.25   115.58  87.22   107.08
7   121.09  108.67  129.59  80.44   114.33  91.82   87.97   94.02   99.55   107.16
8   81.88   124.65  115.64  74.20   136.81  145.24  130.40  102.28  83.84   127.83
9   97.65   131.30  110.31  126.22  113.38  120.63  106.22  142.97  108.63  114.32

这是我写的代码

import numpy as np

inpath = r'C:\Users\10696\Desktop\access\6\app.txt'
kk = np.loadtxt(inpath)
kk = kk[:, 1:]
kk = kk.flatten()
kk

结果为

mkshixfv

mkshixfv4#

一个非常“手动”和“原始”的方式来实现您的需求。

import csv

result = []
with open("test.csv") as f:
    # The delimiter parameter is the different CSV separators
    data = csv.reader(f, delimiter=" ")  
    for i in data:
    # This is because I copied your csv contents into a csv file, 
    # but it is not a standard csv format, there are multiple 
    # spaces between each column, if your csv is standard, 
    # then there is no need to make redundant judgments, just
        result.extend(_ for _ in i[1:] if _)
        # result.extend(i[1:]) # like this
print(result)

相关问题