统计每类数据的个数python
时间: 2024-09-22 19:07:59 浏览: 32
在Python中,统计各类数据的个数通常使用`collections`模块中的`Counter`类,或者直接通过`len()`函数配合列表推导式。这里是一个简单的例子:
```python
from collections import Counter
# 假设我们有一个包含不同类型元素的列表
data = [1, 'a', 'b', 'a', 2, 2, 'c', 'd', 'a']
# 使用Counter统计每个元素的出现次数
counter = Counter(data)
print(counter)
# 输出结果类似:
# Counter({1: 1, 'a': 3, 2: 2, 'b': 1, 'c': 1, 'd': 1})
# 或者,如果你只对某些特定类型的元素感兴趣,可以这样做:
integer_count = len([x for x in data if isinstance(x, int)])
string_count = len([x for x in data if isinstance(x, str)])
print("整数个数:", integer_count)
print("字符串个数:", string_count)
```
在这个例子中,`isinstance()`函数用于检查元素是否属于某个特定类型。`Counter`返回的是一个字典,其中键是元素值,值是该值在列表中出现的次数。
相关问题
从mnist训练集中按现有顺序分出六个万份数据,编写程序,统计每万份数据中与测试集相同位置上具有相同数字的个数。使用python实现
以下是实现该程序的 Python 代码:
```python
import numpy as np
from sklearn.datasets import fetch_openml
from collections import Counter
# 加载mnist数据集
mnist = fetch_openml('mnist_784', version=1, cache=True)
# 将数据集划分为训练集和测试集
X_train, X_test = mnist.data[:60000], mnist.data[60000:]
y_train, y_test = mnist.target[:60000], mnist.target[60000:]
# 将训练集按现有顺序分成六份
X_train_split = np.array_split(X_train, 6)
y_train_split = np.array_split(y_train, 6)
# 统计每万份数据中与测试集相同位置上具有相同数字的个数
for i in range(6):
y_pred = [y_train_split[i][j] for j in range(len(y_train_split[i])) if np.array_equal(X_test[j], X_train_split[i][j])]
counter = Counter(y_pred)
print(f"第{i+1}份数据中与测试集相同位置上具有相同数字的个数:{dict(counter)}")
```
该代码先加载mnist数据集,将数据集划分为训练集和测试集,然后将训练集按现有顺序分成六份。对于每份数据,程序遍历其中的样本,找到与测试集相同位置上具有相同数字的样本,并将它们的标签存入一个列表中。最后,使用 Python 的 Counter 类对这个列表进行计数,得到每个数字出现的次数,并输出结果。
在pandas数据表中,统计出”Label_new“列每一种数据有多少,得出每一行数据的权重(计算方式:1/Label_new中这类数据的个数)
在 pandas 数据表中,你可以使用 `value_counts()` 函数来统计 "Label_new" 列中每种数据出现的次数,然后根据这个计数来计算权重。这里是一个简单的步骤:
1. 首先,使用 `value_counts()` 获取 "Label_new" 列中各独特值及其对应的频次。
```python
counts = df["Label_new"].value_counts()
```
2. 创建一个新的 Series 对象,存储每个 Label 的权重(即 1 除以频次)。
```python
weights = counts / counts.sum()
```
3. 将权重应用到原始 DataFrame 的每一行上,假设你有一个名为 'row_weights' 的新列,可以这样操作:
```python
df['row_weights'] = weights[df['Label_new']]
```
现在,DataFrame 中的 'row_weights' 列将包含每个 'Label_new' 值对应的权重,权重是该值在整个 'Label_new' 列中频率的倒数。
阅读全文