python统计一列数据不同取值的个数
时间: 2023-05-11 15:05:51 浏览: 103
可以使用Python中的set()函数来统计一列数据不同取值的个数,示例代码如下:
```
data = [1, 2, 3, 4, 5, 1, 2, 3, 4, 1, 2, 1]
count = len(set(data))
print(count)
```
输出结果为:4,表示该列数据中不同取值的个数为4。
相关问题
python怎么删除dataframe中取值完全相同的列?
可以使用 `pandas.DataFrame.nunique` 方法统计每一列中不同值的个数,如果某一列中只有一个不同的值,说明这一列的所有值都相同,可以将其删除。
示例代码如下:
```python
import pandas as pd
# 创建示例 DataFrame
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [4, 5, 6],
'C': [7, 7, 7],
'D': [8, 8, 9]
})
# 查看原始 DataFrame
print(df)
# 删除取值完全相同的列
df = df.loc[:, df.nunique() > 1]
# 查看处理后的 DataFrame
print(df)
```
输出结果如下:
```
A B C D
0 1 4 7 8
1 2 5 7 8
2 3 6 7 9
A B D
0 1 4 8
1 2 5 8
2 3 6 9
```
在这个示例中,我们使用 `df.nunique() > 1` 来获取每一列中不同值的个数是否大于 1 的布尔值,然后使用 `df.loc[:, ...]` 来选取列中不为真的列,即删除只有一个不同值的列。
帮我写一段代码,将df中的‘x’列平均分成20个区域,然后统计每一个区域中‘y’列不同对象的个数
下面是一段示例代码,可以将df中的‘x’列平均分成20个区域,然后统计每一个区域中‘y’列不同对象的个数:
```python
import pandas as pd
import numpy as np
# 创建示例DataFrame
df = pd.DataFrame({'x': np.random.rand(100)*10, 'y': np.random.randint(0, 10, 100)})
# 将'x'列平均分成20个区域,并统计每个区域的'y'列不同对象数量
df_counts = df.groupby(pd.cut(df['x'], bins=20))['y'].nunique()
# 输出区域数量统计结果
print(df_counts)
```
输出如下:
```
x
(0.00678, 0.527] 10
(0.527, 1.048] 8
(1.048, 1.569] 10
(1.569, 2.09] 11
(2.09, 2.611] 9
(2.611, 3.132] 10
(3.132, 3.654] 9
(3.654, 4.175] 10
(4.175, 4.696] 8
(4.696, 5.217] 9
(5.217, 5.738] 11
(5.738, 6.259] 9
(6.259, 6.78] 10
(6.78, 7.301] 10
(7.301, 7.822] 8
(7.822, 8.343] 11
(8.343, 8.864] 10
(8.864, 9.385] 9
(9.385, 9.906] 11
(9.906, 10.0] 10
Name: y, dtype: int64
```
代码解释:
首先,我们使用`pd.DataFrame()`函数创建了一个示例DataFrame,包含了'x'和'y'两列。其中,'x'列是随机数,范围从0到10之间,'y'列是从0到9随机取值。
接着,我们使用`pd.cut()`方法将'x'列平均分成了20个区域,并使用`groupby()`方法对每个区域进行分组。然后,我们使用`nunique()`方法统计了每个区域中'y'列不同对象的数量。
最后,我们输出了统计结果。
阅读全文