首页 > 解决方案 > 循环创建多个数据框

问题描述

我试图用来自 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。

谢谢你。

标签: pythonpandas

解决方案


将它们存储到字典中。字典可以保存每种类型的 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()

推荐阅读