Percaya atau tidak, saya tidak dapat menemukan jawaban untuk ini: saya memiliki file csv dengan format berikut:

Epoch: 1 Loss: 164.0284653747 
Epoch: 2 Loss: 164.0155072829
Epoch: 3 Loss: 163.9634398650 
Epoch: 4 Loss: 163.8925548714 
Epoch: 5 Loss: 163.9922899258 

Bagaimana saya bisa menggunakan pandas.read_csv untuk mengurai dengan benar dan mengeluarkan kerangka data:

Zaman ------- Kehilangan

1 -------------164.0284653747

2 -------------164.0155072829

Semoga ilustrasi saya cukup jelas, saya hanya ingin kerangka data dengan 2 kolom bernama epoch and loss dan nilai yang sesuai.

-1
enter_thevoid 15 Januari 2021, 20:48

3 jawaban

Jawaban Terbaik

Jika saya memahami Anda dengan benar, Anda dapat membaca file Anda dengan panda dan membersihkannya secara manual.

Anda dapat menulis parsing regex tetapi mesin akan berubah dari c menjadi python yang berarti Anda akan kehilangan kecepatan kode cython yang mendasarinya.

import pandas as pd 

df = pd.read_csv('file.csv',sep=':',header=None)

df[1] = df[1].replace('\D+','',regex=True).astype(int)

df = df[[1,2]].rename(columns={1 : 'Epoch', 2 : 'Loss'})

print(df)

  Epoch        Loss
0      1  164.028465
1      2  164.015507
2      3  163.963440
3      4  163.892555
4      5  163.992290
2
Umar.H 15 Januari 2021, 17:57

CSV adalah singkatan dari file nilai yang dipisahkan koma. Sementara pandas akan membacanya sebagai file CSV, sebagian besar fungsinya tidak akan terlalu berguna kecuali Anda mengubah pembatas dari koma menjadi sesuatu yang lain. Selain itu, data tidak ada dalam tabel tradisional, yang sekali lagi merupakan definisi CSV.

Namun, semua yang dikatakan, ada cara "peretasan" untuk memperlakukan input Anda sebagai CSV:

csv_file = "something.csv"
df = pandas.read_csv(
    csv_file,
    header=None,
    sep=" ",
    names=[1, "Epoch", 3, "Loss"],
    index_col=False
)[["Epoch", "Loss"]]

Pada dasarnya, Anda menyetel pembatas ke spasi " ", mendefinisikan semua kolom dengan nama dan hanya memilih kolom kedua dan keempat bernama Epoch dan Loss

1
Jason K Lai 15 Januari 2021, 18:10
import csv
import pandas as pd
di_2 = []
di_1 = []
with open("passenger_1.csv", "r") as p:
   file = csv.reader(p)
   for i in file:
       di_1.append(i[0].split(" ")[1])
       di_2.append(i[0].split(" ")[3])
df = pd.DataFrame({
"Epoch": di_1,
"Loss": di_2
  })
print(df.to_string(index=False))
0
sadric adigbe 15 Januari 2021, 19:01