繁体   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