循环创建多个数据框

时间:2020-01-05 08:26:08

标签: python pandas

我试图用来自Xs和Y的不同数据创建4个数据帧。请帮助我。

代码:

# here we are creating 2d imbalanced data points 
ratios = [(100,2), (100, 20), (100, 40), (100, 80)]
plt.figure(figsize=(20,5))
item_iter=0
for j,i in enumerate(ratios):
    plt.subplot(1, 4, j+1)
    X_p=np.random.normal(0,0.05,size=(i[0],2))
    X_n=np.random.normal(0.13,0.02,size=(i[1],2))
    y_p=np.array([1]*i[0]).reshape(-1,1)
    y_n=np.array([0]*i[1]).reshape(-1,1)
    X=np.vstack((X_p,X_n))
    y=np.vstack((y_p,y_n))
    df[item_iter]=pd.DataFrame(X,y)
    item_iter+=1
    plt.scatter(X_p[:,0],X_p[:,1])
    plt.scatter(X_n[:,0],X_n[:,1],color='red')
plt.show()

对于每个比率,我们得到不同的X和Y,我想将其捕获为不同的数据集,例如df_1,df_2,df_3,df_4。

谢谢。

1 个答案:

答案 0 :(得分:0)

将它们存储到字典中。字典可以容纳每种类型的python对象:

data_frames = {}
ratios = [(100,2), (100, 20), (100, 40), (100, 80)]
plt.figure(figsize=(20,5))
item_iter=0

for j,i in enumerate(ratios):
    plt.subplot(1, 4, j+1)
    X_p=np.random.normal(0,0.05,size=(i[0],2))
    X_n=np.random.normal(0.13,0.02,size=(i[1],2))
    y_p=np.array([1]*i[0]).reshape(-1,1)
    y_n=np.array([0]*i[1]).reshape(-1,1)
    X=np.vstack((X_p,X_n))
    y=np.vstack((y_p,y_n))
    data_frames[f"{i}_{j}"]=pd.DataFrame(X,y)
    item_iter+=1
    plt.scatter(X_p[:,0],X_p[:,1])
    plt.scatter(X_n[:,0],X_n[:,1],color='red')
plt.show()