Python()数据类型

Python()数据类型,python,pandas,dataframe,count,unique-values,Python,Pandas,Dataframe,Count,Unique Values,我有一个简单的熊猫数据框,我们称之为评级: ratings=pd.read\u csv(“ratings.csv”,header=0,delimiter=“,”) 印刷品(评级) 我试图得到一列的不同值的数量,我发现: 计数不同的值,使用nunique: df['hID'].nunique() 仅计数非空值,使用计数: df['hID'].count() 计算包括空值在内的总值,使用大小属性: df['hID'].大小 因此,我遵循: print(“%s唯一用户”%ratings[“us

我有一个简单的熊猫数据框,我们称之为评级:

ratings=pd.read\u csv(“ratings.csv”,header=0,delimiter=“,”)
印刷品(评级)
我试图得到一列的不同值的数量,我发现:

计数不同的值,使用nunique:

df['hID'].nunique()
仅计数非空值,使用计数:

df['hID'].count()
计算包括空值在内的总值,使用大小属性:

df['hID'].大小
因此,我遵循:

print(“%s唯一用户”%ratings[“userId”].nunique())
并得到如下输出:

(5,) unique users
阅读文档后,我检查了它的数据类型:

print(类型(评级[“userId”].nunique())
输出仍然是
,从另一个代码调用该变量将引发错误

我是Python新手,所以我可能会问一些愚蠢的问题。感谢阅读并帮助我解决这个问题

编辑:这是我的真实代码(因为它不支持注释的正确代码格式):

以及ratings.csv文件的外观:

userId,movieId,rating,timestamp
1,1,4.0,964982703
1,3,4.0,964981247
1,6,4.0,964982224
1,47,5.0,964983815
1,50,5.0,964982931
...
以及将数据框打印到终端时的外观:

        userId  movieId  rating
0            1        1     4.0
1            1        3     4.0
2            1        6     4.0
3            1       47     5.0
4            1       50     5.0
...        ...      ...     ...
100831     610   166534     4.0
100832     610   168248     5.0
100833     610   168250     5.0
100834     610   168252     5.0
100835     610   170875     3.0
unique_users=ratings[“userId”].nunique()
打印(f“{unique_users}unique users”)
unique\u users=ratings[“userId”]。nunique()
打印(f“{unique_users}unique users”)
IIUC:

import pandas as pd
from io import StringIO

rating_txt = StringIO("""userId,movieId,rating,timestamp
1,1,4.0,964982703
1,3,4.0,964981247
1,6,4.0,964982224
1,47,5.0,964983815
1,50,5.0,964982931""")

ratings_df = pd.read_csv(rating_txt)
ratings_df

print(f"{ratings_df['movieId'].nunique()} movies, {ratings_df['userId'].nunique()} user(s), and {ratings_df['rating'].count()} ratings are given.")
输出:

5 movies, 1 user(s), and 5 ratings are given.
IIUC:

输出:

5 movies, 1 user(s), and 5 ratings are given.


它说
TypeError:“int”对象是不可下标的
我会投反对票,因为它甚至不会编译,只是在第一行添加了dataframe变量,造成了一个输入错误。默认情况下,我编辑了NUNIQUE return int,我看不到indice 0Thanks的用法。nunique()确实返回intIt,表示
TypeError:“int”对象不可下标
我会对此进行否决,因为它甚至不会编译,但只需在第一行中添加dataframe变量就可以了。默认情况下,我编辑了NUNIQUE return int,我看不到indice 0Thanks的用法。nunique()确实返回INT,但似乎确实有问题
Series.nunique
将返回一个
int
DataFrame.nunique
返回一个序列,这两个序列都不是元组。很可能您意外地重写了一些不想重写的变量或方法,因此您正在调用一个不符合您想法的方法,或者调用一个不符合其要求的变量方法。@Alolz我不确定我会做错什么。我用底部的真实代码编辑了我的问题,我希望您能看一下(因为注释中的长代码格式不正确)。nunique返回元组的事实非常奇怪,我相信您的csv可能有问题,pandas正在铸造一些东西以构建数据帧。csv中是否有双值、格式不正确或类似的单元格?@TranTam向我们展示了您的数据帧屏幕,这是我第一次看到nunique返回tupleHi@Yefet和Yuca,我在我的帖子末尾添加了csv文件结构和数据帧的打印结果,谢谢。似乎真的有问题
Series.nunique
将返回一个
int
DataFrame.nunique
返回一个序列,这两个序列都不是元组。很可能您意外地重写了一些不想重写的变量或方法,因此您正在调用一个不符合您想法的方法,或者调用一个不符合其要求的变量方法。@Alolz我不确定我会做错什么。我用底部的真实代码编辑了我的问题,我希望您能看一下(因为注释中的长代码格式不正确)。nunique返回元组的事实非常奇怪,我相信您的csv可能有问题,pandas正在铸造一些东西以构建数据帧。csv中是否有双值、格式不正确或类似的单元格?@TranTam向我们展示了您的数据帧屏幕,这是我第一次看到nunique返回tupleHi@Yefet和Yuca,我在帖子末尾添加了csv文件结构和数据帧的打印结果,谢谢。在试用了您的代码并与我的代码进行比较后,我发现没有将这些代码传递到变量中并直接打印出来是可行的,它们类型的输出也是预期的。我不明白为什么,但谢谢你。在试用了你的代码并与我的代码进行比较后,我发现没有将它们传递到变量中并直接打印出来是有效的,它们类型的输出也如预期的那样。我不明白为什么,但谢谢你。
import pandas as pd
from io import StringIO

rating_txt = StringIO("""userId,movieId,rating,timestamp
1,1,4.0,964982703
1,3,4.0,964981247
1,6,4.0,964982224
1,47,5.0,964983815
1,50,5.0,964982931""")

ratings_df = pd.read_csv(rating_txt)
ratings_df

print(f"{ratings_df['movieId'].nunique()} movies, {ratings_df['userId'].nunique()} user(s), and {ratings_df['rating'].count()} ratings are given.")
5 movies, 1 user(s), and 5 ratings are given.