相关疑难解决方法(0)

读取pandas中的csv文件时出错[CParserError:错误标记数据.C错误:捕获了缓冲区溢出 - 可能是格式错误的输入文件.]

所以我尝试从一个文件夹中读取所有csv文件然后连接它们以创建一个大的csv(所有文件的结构是相同的),保存并再次读取它.所有这一切都是用熊猫完成的.读取时发生错误.我正在附加下面的代码和错误.

import pandas as pd
import numpy as np
import glob

path =r'somePath' # use your path
allFiles = glob.glob(path + "/*.csv")
frame = pd.DataFrame()
list_ = []
for file_ in allFiles:
    df = pd.read_csv(file_,index_col=None, header=0)
    list_.append(df)
store = pd.concat(list_)
store.to_csv("C:\work\DATA\Raw_data\\store.csv", sep=',', index= False)
store1 = pd.read_csv("C:\work\DATA\Raw_data\\store.csv", sep=',')
Run Code Online (Sandbox Code Playgroud)

错误:-

CParserError                              Traceback (most recent call last)
<ipython-input-48-2983d97ccca6> in <module>()
----> 1 store1 = pd.read_csv("C:\work\DATA\Raw_data\\store.csv", sep=',')

C:\Users\armsharm\AppData\Local\Continuum\Anaconda\lib\site-packages\pandas\io\parsers.pyc in parser_f(filepath_or_buffer, sep, dialect, compression, doublequote, escapechar, quotechar, quoting, skipinitialspace, lineterminator, header, index_col, names, prefix, …
Run Code Online (Sandbox Code Playgroud)

python csv pandas

19
推荐指数
3
解决办法
3万
查看次数

6.5 GB文件中的Pandas read_csv消耗超过170GB RAM

我想提起这件事,只是因为它很疯狂.也许韦斯有一些想法.该文件非常规则:1100行x~3M列,数据以制表符分隔,仅由整数0,1和2组成.显然,这不是预期的.

如果我预先填充下面的数据帧,它会占用大约26GB的RAM.

h = open("ms.txt")
header = h.readline().split("\t")
h.close()
rows=1100
df = pd.DataFrame(columns=header, index=range(rows), dtype=int)
Run Code Online (Sandbox Code Playgroud)

系统信息:

  • python 2.7.9
  • ipython 2.3.1
  • numpy 1.9.1
  • 大熊猫0.15.2.

欢迎任何想法.

python parsing numpy ipython pandas

15
推荐指数
1
解决办法
2666
查看次数

low_memory和memory_map标志在pd.read_csv中做了什​​么

函数签名pandas.read_csv包括以下选项:

read_csv(filepath_or_buffer, low_memory=True, memory_map=False, iterator=False, chunksize=None, ...)
Run Code Online (Sandbox Code Playgroud)

我找不到任何文件low_memorymemory_map标志.我对这些功能是否已实现感到困惑,如果是这样,它们如何工作.

特别,

  1. memory_map:如果实现它是否使用np.memmap,如果是,它将各个列存储为memmap或行.
  2. low_memory:它是否指定了cache存储在内存中的内容?
  3. 我们可以将现有转换DataFramememmapped DataFrame

PS:相关模块的版本

pandas==0.14.0
scipy==0.14.0
numpy==1.8.1
Run Code Online (Sandbox Code Playgroud)

python python-2.7 pandas

10
推荐指数
1
解决办法
4156
查看次数

读取 3.2 GB 文件时 Pandas/Python 内存峰值

所以我一直在尝试使用 pandasread_csv函数读取内存中的 3.2GB 文件,但我不断遇到某种内存泄漏,我的内存使用量会激增90%+

所以还有替代方案

  1. 我尝试定义dtype以避免将数据作为字符串保留在内存中,但看到了类似的行为。

  2. 尝试了 numpy read csv,认为我会得到一些不同的结果,但这绝对是错误的。

  3. 尝试逐行阅读遇到了同样的问题,但速度非常慢。

  4. 我最近转向 python 3,所以认为那里可能存在一些错误,但在 python2 + pandas 上看到了类似的结果。

有问题的文件是来自 Kaggle 竞赛的 train.csv 文件组 bimbo的 train.csv 文件

系统信息:

RAM: 16GB, Processor: i7 8cores

如果您还想了解其他信息,请告诉我。

谢谢 :)

编辑1:它是一个内存峰值!不是泄漏(对不起,我的错。)

编辑 2:csv 文件示例

Semana,Agencia_ID,Canal_ID,Ruta_SAK,Cliente_ID,Producto_ID,Venta_uni_hoy,Venta_hoy,Dev_uni_proxima,Dev_proxima,Demanda_uni_equil
3,1110,7,3301,15766,1212,3,25.14,0,0.0,3
3,1110,7,3301,15766,1216,4,33.52,0,0.0,4
3,1110,7,3301,15766,1238,4,39.32,0,0.0,4
3,1110,7,3301,15766,1240,4,33.52,0,0.0,4
3,1110,7,3301,15766,1242,3,22.92,0,0.0,3
Run Code Online (Sandbox Code Playgroud)

编辑3:文件中的行数74180465

其他则简单pd.read_csv('filename', low_memory=False)

我努力了

from numpy import genfromtxt
my_data = genfromtxt('data/train.csv', delimiter=',')
Run Code Online (Sandbox Code Playgroud)

更新 下面的代码刚刚工作,但我仍然想弄清楚这个问题的根源,一定有什么问题。

import pandas as pd
import gc
data = pd.DataFrame()
data_iterator = pd.read_csv('data/train.csv', …
Run Code Online (Sandbox Code Playgroud)

python memory csv pandas

6
推荐指数
1
解决办法
2995
查看次数

如何制作进度条,以便从大型xlsx文件加载pandas DataFrame?

来自https://pypi.org/project/tqdm/

import pandas as pd
import numpy as np
from tqdm import tqdm

df = pd.DataFrame(np.random.randint(0, 100, (100000, 6)))
tqdm.pandas(desc="my bar!")p`
df.progress_apply(lambda x: x**2)
Run Code Online (Sandbox Code Playgroud)

我接受了这段代码并对其进行了编辑,以便从load_excel创建一个DataFrame而不是使用随机数:

import pandas as pd
from tqdm import tqdm
import numpy as np

filename="huge_file.xlsx"
df = pd.DataFrame(pd.read_excel(filename))
tqdm.pandas()
df.progress_apply(lambda x: x**2)
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误,所以我将df.progress_apply更改为:

df.progress_apply(lambda x: x)
Run Code Online (Sandbox Code Playgroud)

这是最终代码:

import pandas as pd
from tqdm import tqdm
import numpy as np

filename="huge_file.xlsx"
df = pd.DataFrame(pd.read_excel(filename))
tqdm.pandas()
df.progress_apply(lambda x: x)
Run Code Online (Sandbox Code Playgroud)

这会产生一个进度条,但实际上并没有显示任何进度,而是加载进度条,并且当​​操作完成时,它会跳到100%,无法达到目的。

我的问题是:如何使进度条起作用?
progress_apply内部的函数实际上是做什么的?
有没有更好的方法?也许是tqdm的替代品?

任何帮助是极大的赞赏。

python excel pandas tqdm

5
推荐指数
2
解决办法
2699
查看次数

Pandas read_csv low_memory 和 dtype 选项。TypeError:无法根据规则“安全”将数组从 dtype('O') 转换为 dtype('float64')

我正在尝试读取 csv 文件

df = pd.read_csv('Salaries.csv')
Run Code Online (Sandbox Code Playgroud)

我有这个:

sys:1: DtypeWarning: 列 (3,4,5,6,12) 具有混合类型。在导入时指定 dtype 选项或设置 low_memory=False。

所以,我尝试过:

df = pd.read_csv('Salaries.csv', sep=',', dtype={
'Id': int, 
'EmployeeName': str, 
'JobTitle': str, 
'BasePay': float,
'OvertimePay': float, 
'OtherPay': float, 
'Benefits': float, 
'TotalPay': np.float64,
'TotalPayBenefits': np.float64,
'Year': np.int64,
'Notes': np.float64,
'Agency': str,
'Status': float})
Run Code Online (Sandbox Code Playgroud)

现在我有这个:

回溯(最近一次调用最后):文件“pandas_libs\parsers.pyx”,第1156行,在pandas._libs.parsers.TextReader._convert_tokens TypeError:无法根据dtype('O')将数组转换为dtype('float64')遵守“安全”规则

我也阅读了之前提出的问题和官方文档,但不明白问题出在哪里。

以下是 Salaries.csv 中的数据示例

ID、员工姓名、职务、基本工资、加班工资、其他工资、福利、总工资、总工资福利、年份、备注、机构、状态

1,纳撒尼尔·福特 (NATHANIEL FORD),大都会交通管理局总经理,167411.18,0.0,400184.25,,567595.43,567595.43,2011,,旧金山,

python csv dataframe python-3.x pandas

5
推荐指数
0
解决办法
7065
查看次数

Python:读取 CSV 文件时替换值

我有一个 CSV 文件,其中包含多个列,其中包括整数和字符串。当然,由于混合数据类型,我收到了数据类型警告。我用这个通用命令读取了该文件。

df = pd.read_csv(path, sep=";", na_values=missing)
Run Code Online (Sandbox Code Playgroud)

我可以使用low_memory=Falseordtype=object来消除警告,但据我所知,这使得读取我的文件不会提高内存效率。

我也可以使用na_values="my_string",但我有其他缺失值(应该是真正的缺失值)并且不想混合它们。

我不需要字符串的值,只需要它的值计数,所以我想用整数替换它。像这样的东西。

df.replace(to_replace="my_string", value=999)
Run Code Online (Sandbox Code Playgroud)

但是,是否也可以读取 CSV 文件时替换值?或者是否存在其他解决方案?我不想简单地消除警告,而是找到一种内存效率更高的解决方案。

(我知道这个答案,但它并不能真正帮助我解决我的问题。)

python csv pandas

4
推荐指数
1
解决办法
1万
查看次数

在导入时指定 dtype 选项或设置 low_memory=False

我正在使用以下代码:

df = pd.read_csv('/Python Test/AcquirerRussell3000.csv')
Run Code Online (Sandbox Code Playgroud)

我有以下类型的数据:

18.07.2000  27.1875         0 08.08.2000  25.3125       0.1 05.09.2000  \
0   19.07.00  26.6250 -0.020690   09.08.00  25.2344 -0.003085   06.09.00   
1   20.07.00  26.6250  0.000000   10.08.00  25.1406 -0.003717   07.09.00   
2   21.07.00  25.6875 -0.035211   11.08.00  25.5781  0.017402   08.09.00   
3   24.07.00  26.2500  0.021898   14.08.00  25.4375 -0.005497   11.09.00   
4   25.07.00  26.6875  0.016667   15.08.00  25.5625  0.004914   12.09.00 
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Pythone Test/untitled0.py:1: DtypeWarning: Columns (long list of numbers) have mixed types. 
Specify dtype option on import or set low_memory=False.
Run Code Online (Sandbox Code Playgroud)

所以每第三列是一个日期,其余的都是数字。我想没有单一的数据类型,因为日期是字符串,其余的是浮点数或整数?我有大约 5000 列或更多和大约 400 行。

我见过与此类似的问题,但不太知道如何将其应用于我的数据。此外,我想在堆叠数据帧之后运行以下代码。 …

python dataframe pandas

3
推荐指数
1
解决办法
1万
查看次数

列 (0,1,3) 具有混合类型。在导入时指定 dtype 选项或设置 low_memory=False。导入 csv 文件时

我正在使用 pandas 将 csv 文件导入到 python 数据框中。PFA 我的代码如下:

import pandas as pd
df=pd.read_csv('C:/Users/Administrator/Desktop/NSE_Normalize.csv')
Run Code Online (Sandbox Code Playgroud)

当我使用上面的代码导入时,没有给出错误,但出现警告,如下所示:

Columns (0,1,3) have mixed types.Specify dtype option on import or set low_memory=False.
Run Code Online (Sandbox Code Playgroud)

通过参考答案Pandas read_csv low_memory and dtype options我开始知道为什么会发生这种情况以及我的文件有不明确的 dtypes。

我能够通过使用来解决这个问题:

df = pd.read_csv("C:/Users/Administrator/Desktop/NSE_Normalize.csv",sep=',', error_bad_lines=False, index_col=False, dtype='unicode') as mentioned on [Specify dtype option on import or set low_memory=False][2]
Run Code Online (Sandbox Code Playgroud)

但是当我导入相同的文件作为 Excel 工作簿(.xlsx 文件)时。不会发生此错误。与 csv 对应项相比,Sure 需要更长的时间才能导入,但不会显示错误。

因此,从上面的讨论中我是否可以知道为什么在 python 中加载 .xlsx 文件的时间比其 .csv 对应的时间长?另外,何时使用 .csv 导入和 .xlsx 导入?

这是我导入的文件:

Excel 文件 csv 和 xlsx 格式

python excel pandas

3
推荐指数
1
解决办法
7493
查看次数

Pandas read_csv() 给出 DtypeWarning

.csv从数据帧创建了一个文件,如下所示:

df.to_csv('partial.csv', sep=',')
Run Code Online (Sandbox Code Playgroud)

数据框中的数据类型

df.dtypes给出:

Contact_ID      int64
Src_Sys_Cd     object
First_Name     object
Last_Name      object
Src_Sys_Key    object
Full_Name      object
Office_No      object
Mobile         object
Email          object
dtype: object
Run Code Online (Sandbox Code Playgroud)

当我尝试.csv使用read_csv它读取新创建的文件时,出现错误:

new_df =  pd.read_csv('partial.csv')
Run Code Online (Sandbox Code Playgroud)

DtypeWarning:列 (5) 具有混合类型。在导入时指定 dtype 选项或设置 low_memory=False。交互性=交互性,编译器=编译器,结果=结果)

我怎样才能避免这个错误?出现此错误是因为我在to_csvor时做错了什么read_csv吗?

python pandas

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

pandas ×10

python ×10

csv ×4

dataframe ×2

excel ×2

ipython ×1

memory ×1

numpy ×1

parsing ×1

python-2.7 ×1

python-3.x ×1

tqdm ×1