gpt4 book ai didi

python - 为什么我的 pandas df 是所有对象数据类型而不是例如整数、字符串等?

转载 作者:行者123 更新时间:2023-12-01 09:15:10 25 4
gpt4 key购买 nike

结束于this所以有人建议使用 df.info() 来获取有关 pandas df 的信息,包括每个字段的数据类型。

在此粘贴此人的部分答案:

train.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
PassengerId 891 non-null int64
Survived 891 non-null int64
Pclass 891 non-null int64
Name 891 non-null object
Sex 891 non-null object
Age 714 non-null float64
SibSp 891 non-null int64
Parch 891 non-null int64
Ticket 891 non-null object
Fare 891 non-null float64
Cabin 204 non-null object
Embarked 889 non-null object
dtypes: float64(2), int64(5), object(5)
memory usage: 83.6+ KB

我在自己的 pandas 数据框架上尝试了这个:

sessions1DF.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 69085 entries, 0 to 69084
Data columns (total 10 columns):
ga:date 69085 non-null object
ga:hour 69085 non-null object
ga:dimension1 69085 non-null object
ga:dimension2 69085 non-null object
ga:userType 69085 non-null object
ga:landingpagePath 69085 non-null object
ga:deviceCategory 69085 non-null object
ga:sessions 69085 non-null object
ga:goal1Completions 69085 non-null object
ga:bounces 69085 non-null object
dtypes: object(10)
memory usage: 5.3+ MB

一切都是一个对象,我期望它是字符串和数字的某种组合。这是头部:

sessions1DF.head()
Out[13]:
ga:date ga:hour ... ga:goal1Completions ga:bounces
0 20180605 18 ... 0 0
1 20180605 18 ... 0 1
2 20180605 18 ... 0 0
3 20180605 18 ... 0 1
4 20180605 18 ... 0 0

[5 rows x 10 columns]

(我希望我知道如何强制 pandas head() 向我显示所有功能,而不仅仅是上面显示的 4 个功能)。

sessions1DF 实际上有一个名为“dimension1”的字段,它应该是一个字符串,我想将它与另一个数据框session2DF 连接起来,它们共享相同的字段“dimension1”。所以我想在维度 1 上加入他们。

我的 pandas 数据框有什么“问题”吗?有没有办法“提取”所有对象作为其中的实际数据?据推测,我的数据帧不是正常格式,其中每个字段只是一个数据向量。

有没有办法改变我的数据框,这样如果我输入 sessions1DF.info() 我会得到类似于顶部粘贴的结果,每列都是一个字符串, int 等而不是对象?

最佳答案

您看到的问题可能与您将数据读入数据帧的方式有关。假设您使用了 pandas 阅读器之一,例如 csv 阅读器:

import pandas as pd
df = pd.read_csv('some_file.csv')

您的文件中可能包含以下一个或多个条件:

  1. 表示缺失值的字符串字符
  2. 多个页眉或页脚,其中该列中的类型为非数字。
  3. 表格中间的奇怪行破坏了类型推断。

pandas 读取器(或任何尝试解析分隔数据并动态找出数据类型的读取)必须查看一列中的数据并问自己“此列中的所有内容都是数字吗?”如果是这样,则将类型转换为数字(int 或 float)。如果解析器/读取器在列中看到不是数字的字符串,则整个列将被转换为“object”而不是 int 或 float。

要探索这种可能性,您可以使用文本编辑器(notepad++、Visual Studio Code 等)打开文本文件并目视检查结构。

如果文件太大而无法直观地打开和扫描(69,000 行并不算大),您可以尝试使用 pandas 阅读器功能的各种选项。要查看这些内容,请尝试输入以下内容:

pd.read_csv?

查看所有可用的选项。例如,您可能只想尝试读取前 n 行,或者尝试跳过顶部的几行,或者指定表示缺失值的字符,以便它知道在检查类型时跳过该字符。

您甚至可以将每列数据类型传递给读取,以便它“知道”哪些列是数字,哪些是字符串,哪些是日期时间等。

此外,在 pandas 中,您可以控制选项,以便在查看数据框时,您可以看到所有列,而不是 ... 指示,请参阅 pandas 网站上的 pandas.options.display 。

pandas options

enter image description here

关于python - 为什么我的 pandas df 是所有对象数据类型而不是例如整数、字符串等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51340848/

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