gpt4 book ai didi

python - pandas to_csv ,唯一记录数量减少

转载 作者:行者123 更新时间:2023-11-30 22:07:23 33 4
gpt4 key购买 nike

我正在将 pandas 数据帧写入 csv 文件。但是我可以发现唯一 ID 的数量正在减少,但总行数保持不变

下面您可以找到代码:

检查grouped_test的总计数和唯一计数

 grouped_test['fullVisitorId'].nunique() , grouped_test['fullVisitorId'].count() 
(639230, 639230)

提交到 csv 文件

grouped_test.to_csv('result.csv',index=False)

再次读取同一个 csv 文件

result = pd.read_csv('result.csv')

读取文件时我收到以下警告

py:2785: DtypeWarning: Columns (0) have mixed types. Specify dtype option on import or set low_memory=False.
interactivity=interactivity, compiler=compiler, result=result)

检查计数

result['fullVisitorId'].nunique() , result['fullVisitorId'].count()
(638932, 639230)

您可以发现唯一 ID 的数量减少,知道可能是什么问题。

您可以在下面找到一些 Id 示例值。 id 的长度/数据类型有什么关系吗?

9844437513179813866
643697640977915618

最佳答案

首先,您对整数长度很重要的猜测是正确的。

让我们用数据做一些实验来证明这一点。

实验1

让我们看看 Pandas 可以处理的最大整数是多少:

df = pd.DataFrame({"a":[9223372036854775899]})
df.to_csv("try.csv", index=False)
df1 = pd.read_csv("try.csv", dtype={"a":int})
df1

a
0 9223372036854775899


df = pd.DataFrame({"a":[92233720368547758100]})
df.to_csv("try.csv", index=False)
df2 = pd.read_csv("try.csv", dtype={"a":int})
df2

---------------------------------------------------------------------------
OverflowError Traceback (most recent call last)
pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader._convert_with_dtype()

pandas/_libs/parsers.pyx in pandas._libs.parsers._try_int64()

OverflowError: Overflow

那么,现在的问题是我们应该如何正确指定数字的格式

实验2

df = pd.DataFrame({"a":[98444375131798787989138668, 98444375131798787989138669]})
df.to_csv("try.csv", index=False)
df3 = pd.read_csv("try.csv", dtype={"a":float})

df3.a.nunique()

1

我们看到float正在吃掉数字

实验3

让我们尝试一下对象格式

df = pd.DataFrame({"a":[98444375131798787989138668, 98444375131798787989138669]})
df.to_csv("try.csv", index=False)
df4 = pd.read_csv("try.csv", dtype={"a":object})

df4.a.nunique()

2

简而言之,您问题的答案是将读取时的数据类型指定为object:

df = pd.read_csv("result.csv", dtype={"fullVisitorId":object})

关于python - pandas to_csv ,唯一记录数量减少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52476422/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com