无法创建具有特定数量的类标签的熊猫数据框
Posted
技术标签:
【中文标题】无法创建具有特定数量的类标签的熊猫数据框【英文标题】:Unable to create pandas dataframe with particular number of class label 【发布时间】:2021-01-18 03:43:29 【问题描述】:是否可以创建一个随机的 pandas 数据框,其中 1500 行的类标签为 0,500 行的类标签为 1。
应该是这样的
feature_1 class_label
sdfdsfsdfd 0
kjdkfkjdsf 0
jkkjhjknn 1
dfsfgdsfd 0
gfdgdfsdd 1
feature_1 列的值可以是任何值,但它的 1500 个值应具有标签 0 和 500 个值 应该有标签 1。
【问题讨论】:
【参考方案1】:我们可以在这里使用numpy,并使用np.random.choice
从列长度的range
中抽取随机样本:
a = np.zeros(2000, dtype='int')
a[np.random.choice(range(len(a)), 500)] = 1
pd.Series(a).rename_axis('feature_1').reset_index(name='label')
feature_1 label
0 0 0
1 1 0
2 2 0
3 3 0
4 4 0
... ... ...
1995 1995 1
1996 1996 1
1997 1997 0
1998 1998 1
1999 1999 0
[2000 rows x 2 columns]
或者另一个想法是:
(pd.Series(np.r_[[0]*1500, [1]*500], name='label')
.sample(frac=1)
.rename_axis('feature_1')
.reset_index(name='label'))
feature_1 label
0 311 0
1 217 0
2 1940 1
3 1538 1
4 1904 1
... ... ...
1995 550 0
1996 836 0
1997 1065 0
1998 1343 0
1999 1070 0
[2000 rows x 2 columns]
【讨论】:
【参考方案2】:试试这个:
import random
import string
import numpy as np
import pandas as pd
def get_random_string(length):
letters = string.ascii_lowercase
result_str = ''.join(random.choice(letters) for i in range(length))
return result_str
arr=[]
label=[]
for i in range(2000):
if i<1500:
label.append(0)
else:
label.append(1)
arr.append(get_random_string(8))
df=pd.DataFrame([arr,label]).T
df.columns=['f1','label']
df.head()
输出:
f1 label
0 twfzvgpp 0
1 fvndhbaq 0
2 sawoflua 0
3 yqdgqtmx 0
4 glfsdyix 0
Source
【讨论】:
【参考方案3】:class_label= random.sample(
[0 for i in range(1500)]+[1 for i in range(500)])
df = pd.dataframe(dict(
class_label= class_label,
feature_1=list(range(2000))))
【讨论】:
以上是关于无法创建具有特定数量的类标签的熊猫数据框的主要内容,如果未能解决你的问题,请参考以下文章