Как извлечь данные из испорченного CSV? - PullRequest
0 голосов
/ 17 февраля 2019

как извлечь данные

Sample_File,C:\app\ok,,,,,,,,,,,,,,,,
Sample Time,20,,,,,,,,,,,,,,,,
Density,1,,,,,,,,,,,,,,,,
Stokes,off,,,,,,,,,,,,,,,,
Lower,0.486,,,,,,,,,,,,,,,,
Upper ,20.53,,,,,,,,,,,,,,,,
Sample #,75,,,,,,,,,,,,,,,,
Date,1/30/2019,,,,,,,,,,,,,,,,
Start Time,8:59:44,,,,,,,,,,,,,,,,
Correlate ,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,conts total
<0.523,0,3,1,0,0,4,9,2,0,0,0,0,0,0,0,0,19
0.542,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,3
1.037,0,0,4,8,2,1,1,2,0,0,0,0,0,0,0,0,18
1.114,0,1,5,16,3,0,0,0,0,0,0,0,0,0,0,0,25
1.197,0,0,2,11,7,2,1,2,0,0,0,0,0,0,0,0,25
2.129,0,15,49,21,150,401,4,13,8,0,0,0,0,0,0,0,661
2.288,0,15,68,53,201,795,18,13,3,0,0,0,0,0,0,0,1166
2.458,0,9,72,99,238,1533,15,32,6,0,0,0,0,0,0,0,2004
3.786,0,0,0,0,85,10054,1303,333,41,0,0,0,0,0,0,0,11816
4.068,0,0,0,1,33,8310,1504,422,38,0,1,0,0,0,0,0,10309
Diameter,Raw Counts,,,,,,,,,,,,,,,,
<0.523,19,,,,,,,,,,,,,,,,
0.542,3,,,,,,,,,,,,,,,,
0.583,4,,,,,,,,,,,,,,,,
0.626,4,,,,,,,,,,,,,,,,
0.673,9,,,,,,,,,,,,,,,,
Side,Raw Counts,,,,,,,,,,,,,,,,
1,0,,,,,,,,,,,,,,,,
2,129,,,,,,,,,,,,,,,,
3,361,,,,,,,,,,,,,,,,
Event 1,971,,,,,,,,,,,,,,,,
Event 3,7091,,,,,,,,,,,,,,,,
Event 4,1,,,,,,,,,,,,,,,,
Dead Time,448,,,,,,,,,,,,,,,,
pressure,1006,,,,,,,,,,,,,,,,

Я использовал

Aps_data = pd.read_csv ("test.csv")

получая ошибку: utf-8 'кодек не может декодировать байт 0xb5 в позиции 7: недопустимый начальный байт

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

Чтение ваших данных (копирование и вставка) работает просто отлично.Пожалуйста, не забывайте указывать кодировку при использовании pandas.read_csv;отметьте, например, этот ответ и проконсультируйтесь docs .

Чтение ваших данных в Dataframe:

import pandas as pd
from io import StringIO

s = """
Sample_File,C:\app\ok,,,,,,,,,,,,,,,,
Sample Time,20,,,,,,,,,,,,,,,,
Density,1,,,,,,,,,,,,,,,,
Stokes,off,,,,,,,,,,,,,,,,
Lower,0.486,,,,,,,,,,,,,,,,
Upper ,20.53,,,,,,,,,,,,,,,,
Sample #,75,,,,,,,,,,,,,,,,
Date,1/30/2019,,,,,,,,,,,,,,,,
Start Time,8:59:44,,,,,,,,,,,,,,,,
Correlate ,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,conts total
<0.523,0,3,1,0,0,4,9,2,0,0,0,0,0,0,0,0,19
0.542,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,3
1.037,0,0,4,8,2,1,1,2,0,0,0,0,0,0,0,0,18
1.114,0,1,5,16,3,0,0,0,0,0,0,0,0,0,0,0,25
1.197,0,0,2,11,7,2,1,2,0,0,0,0,0,0,0,0,25
2.129,0,15,49,21,150,401,4,13,8,0,0,0,0,0,0,0,661
2.288,0,15,68,53,201,795,18,13,3,0,0,0,0,0,0,0,1166
2.458,0,9,72,99,238,1533,15,32,6,0,0,0,0,0,0,0,2004
3.786,0,0,0,0,85,10054,1303,333,41,0,0,0,0,0,0,0,11816
4.068,0,0,0,1,33,8310,1504,422,38,0,1,0,0,0,0,0,10309
Diameter,Raw Counts,,,,,,,,,,,,,,,,
<0.523,19,,,,,,,,,,,,,,,,
0.542,3,,,,,,,,,,,,,,,,
0.583,4,,,,,,,,,,,,,,,,
0.626,4,,,,,,,,,,,,,,,,
0.673,9,,,,,,,,,,,,,,,,
Side,Raw Counts,,,,,,,,,,,,,,,,
1,0,,,,,,,,,,,,,,,,
2,129,,,,,,,,,,,,,,,,
3,361,,,,,,,,,,,,,,,,
Event 1,971,,,,,,,,,,,,,,,,
Event 3,7091,,,,,,,,,,,,,,,,
Event 4,1,,,,,,,,,,,,,,,,
Dead Time,448,,,,,,,,,,,,,,,,
pressure,1006,,,,,,,,,,,,,,,,
"""

df = pd.read_csv(StringIO(s))
0 голосов
/ 17 февраля 2019

Просто с помощью модуля csv

import csv

with open('mycsv.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row) # print whole row
        print(row[0]) # print first column

Edit1: заменил rb на r при открытии файла, чтобы он работал как в Python2, так и в Python3.

...