簡體   English   中英

使用熊貓清理CSV數據

[英]Data Cleaning of CSV using Pandas

我有一個csv文件,如下所示:

                   100%Q,mean(ms),P50(ms),P99(ms),p99.9(ms),#Samples
QCT1,0.0376542  0.044935    0.090388    0.091279    1760105,,,,
QCT2,0.0489372  0.044953    0.090606    0.091422    1354230,,,,
QCT3,0.0447087  0.045008    0.046186    0.063825    123448,,,,
RCT,0.38646 0.38588 0.844293    1.01548 7295875,,,,
WCT,NA  NA  NA  NA  NA,,,,

我想清除標頭上所有這些混亂的空間以及所有不必要的逗號,然后將其轉換為另一個數據幀(無論它是逗號還是空格分隔的),以便我可以與另一個數據幀進行一些比較。

我已經嘗試過一些操作,例如,刪除幾列並清理標題和所有內容,但是這是我目前使用pandas的結果:數據框在按Tab鍵分隔時看起來像下面:

import pandas as pd
df1=pd.read_csv("results/actual.csv",sep='\t')
df1


                         100%Q,mean(ms),P50(ms),P99(ms),p99.9(ms),#Samples
QCT1,0.03 0.05 0.09 0.09                                          5,,,,
QCT2,0.04 0.04 0.09 0.09                                          0,,,,
QCT3,0.04 0.08 0.04 0.06                                          8,,,,
RCT,0.3  0.3 0.8 1.01                                             5,,,,
WCT,NA NaN NaN NaN                                                NA,,,,

默認情況下,數據幀的進一步輸出如下所示:

df2=pd.read_csv("results/actual.csv",usecols=range(0,6))
df2

100%Q mean(ms)                    P50(ms)   P99(ms)  p99.9(ms)  #Samples
QCT1  0.03\t0.05\t0.09\t0.09\t5    NaN      NaN      NaN        NaN
QCT2  0.04\t0.04\t0.09\t0.09\t0    NaN      NaN      NaN        NaN
QCT3  0.04\t0.08\t0.04\t0.06\t8    NaN      NaN      NaN        NaN
RCT   0.3\t0.3\t0.8\t0.01\t5       NaN      NaN      NaN        NaN
WCT   NA\tNA\tNA\tNA\tNA           NaN      NaN      NaN        NaN

我希望它看起來像這樣:

100%Q    mean(ms)  P50(ms)   P99(ms)  p99.9(ms)  #Samples
QCT1     0.03      0.05      0.09     0.09       5
QCT2     0.04      0.04      0.09     0.09       0
QCT3     0.04      0.08      0.04     0.06       8
RCT      0.3       0.3       0.8      1.01       5
WCT      NA        NaN       NaN      NaN        NA


問題是多余的空格以及標頭中的空格。 有沒有一種方法可以將其轉換為帶有通用定界符的數據幀。 如果遇到這個問題並用Pandas解決了這個問題,那么有人可以幫助我,那就太好了。

注意:請忽略實際表中的值,因為我已將其調整為適合框架的格式,以使它看起來不錯並且對每個人都有意義。

我知道您的列標題與其他值之間以逗號分隔,而索引列與其他值之間以逗號分隔。 這些值以制表符分隔。 您可以使用“ \\ t |”分隔符進行讀取,重命名各列,然后在第一列進行索引。 這是您想要的嗎? 我假設您的文件中不包含逗號或制表符,但這些內容並不意味着要分隔任何內容。

df = pd.read_csv('results/actual.csv', sep='\t|,', index_col='100%Q')

讀取與該文件,分隔符,使得僅means(ms)列已被處理。 接下來,您可以將多個空格與' '.join(x.split())合並為一個,並用split(' ')空白中的means(ms) split(' ')為空白。 使用列表理解將所有結果組合到列表列表中,然后插入數據框的第1:列。

df=pd.read_csv("results/actual.csv",sep=',')
df[df.columns[1:]] = [' '.join(x.split()).split(' ') for x in df['mean(ms)']]

如果制表符分隔了means(ms)中的值,請使用:

df[df.columns[1:]] = [x.split('\t') for x in df['mean(ms)']]

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM