簡體   English   中英

python 讀入 csv 錯誤

[英]python reading in csv incorrectly

我正在使用 RStudio 並使用 R 語言通過read.csv function 將 dataframe 讀入 RStudio,我沒有任何問題。

這是 R 的dput的 output,因此您可以看到數據框。 我不能為 python 做等效版本,因為我沒有在 RStudio 中得到正確的版本。

structure(list(X = 1:32, car = c("Mazda RX4", "Mazda RX4 Wag", 
"Datsun 710", "Hornet 4 Drive", "Hornet Sportabout", "Valiant", 
"Duster 360", "Merc 240D", "Merc 230", "Merc 280", "Merc 280C", 
"Merc 450SE", "Merc 450SL", "Merc 450SLC", "Cadillac Fleetwood", 
"Lincoln Continental", "Chrysler Imperial", "Fiat 128", "Honda Civic", 
"Toyota Corolla", "Toyota Corona", "Dodge Challenger", "AMC Javelin", 
"Camaro Z28", "Pontiac Firebird", "Fiat X1-9", "Porsche 914-2", 
"Lotus Europa", "Ford Pantera L", "Ferrari Dino", "Maserati Bora", 
"Volvo 142E"), mpg = c(21, 21, 22.8, 21.4, 18.7, 18.1, 14.3, 
24.4, 22.8, 19.2, 17.8, 16.4, 17.3, 15.2, 10.4, 10.4, 14.7, 32.4, 
30.4, 33.9, 21.5, 15.5, 15.2, 13.3, 19.2, 27.3, 26, 30.4, 15.8, 
19.7, 15, 21.4), cyl = c(6L, 6L, 4L, 6L, 8L, 6L, 8L, 4L, 4L, 
6L, 6L, 8L, 8L, 8L, 8L, 8L, 8L, 4L, 4L, 4L, 4L, 8L, 8L, 8L, 8L, 
4L, 4L, 4L, 8L, 6L, 8L, 4L), disp = c(160, 160, 108, 258, 360, 
225, 360, 146.7, 140.8, 167.6, 167.6, 275.8, 275.8, 275.8, 472, 
460, 440, 78.7, 75.7, 71.1, 120.1, 318, 304, 350, 400, 79, 120.3, 
95.1, 351, 145, 301, 121), hp = c(110L, 110L, 93L, 110L, 175L, 
105L, 245L, 62L, 95L, 123L, 123L, 180L, 180L, 180L, 205L, 215L, 
230L, 66L, 52L, 65L, 97L, 150L, 150L, 245L, 175L, 66L, 91L, 113L, 
264L, 175L, 335L, 109L), drat = c(3.9, 3.9, 3.85, 3.08, 3.15, 
2.76, 3.21, 3.69, 3.92, 3.92, 3.92, 3.07, 3.07, 3.07, 2.93, 3, 
3.23, 4.08, 4.93, 4.22, 3.7, 2.76, 3.15, 3.73, 3.08, 4.08, 4.43, 
3.77, 4.22, 3.62, 3.54, 4.11), wt = c(2.62, 2.875, 2.32, 3.215, 
3.44, 3.46, 3.57, 3.19, 3.15, 3.44, 3.44, 4.07, 3.73, 3.78, 5.25, 
5.424, 5.345, 2.2, 1.615, 1.835, 2.465, 3.52, 3.435, 3.84, 3.845, 
1.935, 2.14, 1.513, 3.17, 2.77, 3.57, 2.78), qsec = c(16.46, 
17.02, 18.61, 19.44, 17.02, 20.22, 15.84, 20, 22.9, 18.3, 18.9, 
17.4, 17.6, 18, 17.98, 17.82, 17.42, 19.47, 18.52, 19.9, 20.01, 
16.87, 17.3, 15.41, 17.05, 18.9, 16.7, 16.9, 14.5, 15.5, 14.6, 
18.6), vs = c(0L, 0L, 1L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 1L, 0L, 
0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 
0L, 0L, 0L, 1L), am = c(1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L), gear = c(4L, 4L, 4L, 3L, 3L, 3L, 3L, 
4L, 4L, 4L, 4L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 3L, 3L, 3L, 
3L, 3L, 4L, 5L, 5L, 5L, 5L, 5L, 4L), carb = c(4L, 4L, 1L, 1L, 
2L, 1L, 4L, 2L, 2L, 4L, 4L, 3L, 3L, 3L, 4L, 4L, 4L, 1L, 2L, 1L, 
1L, 2L, 2L, 4L, 2L, 1L, 2L, 2L, 4L, 6L, 8L, 2L)), class = "data.frame", row.names = c(NA, 
-32L))

這是代碼的圖像和 RStudio 控制台中的 dataframe。

在此處輸入圖像描述

現在我正在使用 python 將相同的 csv 讀入 RStudio,除了這個不太好用。 例如,缺少一些變量,如wt變量。 此外,它還在左側創建了一個額外的列。 我想這可能是因為wt變量是一個dbl但這不是原因,因為mpg也是一個雙精度變量。

在此處輸入圖像描述

我在 pd.read_csv 中做錯了什么,沒有正確讀取 mtcars dataframe?

你的Python密碼沒有錯。 只是 dataframe 太“寬”,列太多,無法顯示所有列。 這就是為什么在cylvs之間有一個“...”。

要解決此問題,請參閱如何擴展 output 顯示以查看 Pandas DataFrame 的更多列?

我認為您來自 RStudio,您可能會因為 dataframe 未完全顯示而感到困擾。 就我個人而言,我已經習慣了,大部分時間我都清楚我當前有哪些數據列。

對於Unnamed: 0列,發生這種情況可能是因為上次將 dataframe 寫入 csv 時,您還包含了不需要的索引。 您的mtcars.csv可能如下所示:

,car,mpg,...
1,Mazda RX4,21.0,...
2,Mazda RX4 Wag,21.0,...

但最好是

car,mpg,...
Mazda RX4,21.0,...
Mazda RX4 Wag,21.0,...

因為您保存的索引可能毫無意義。

您要么(1)下次不要將索引寫入 csv(我不知道您使用的是 R 還是 Python),或者(2)寫入pd.read_csv('mtcars.csv', index=0)這樣您的 csv 中的第零列就會自動解析為索引。

數據讀取成功。 如果你說顯示中的點是因為默認情況下 python pandas 只顯示幾列,你可以改變它

# it will show all columns
import pandas as pd
pd.set_option("display.max_columns", None)

對於“未命名:0”列,這是默認情況下保存的索引,沒有名稱,您可以將其用作索引而不是具有以下參數的列:

pd.read_csv('mtcars.csv', index=0)

如果你想在閱讀的同時忽略它,你可以使用:

pd.read_csv('mtcars.csv', index_col=False)

暫無
暫無

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

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