是否可以创建一个随机的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。
答案 0 :(得分:2)
我们可以在此处使用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]
答案 1 :(得分:1)
尝试一下:
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
答案 2 :(得分:0)
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))))