python - 循环创建多个数据框
问题描述
我试图用来自 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。
谢谢你。
解决方案
将它们存储到字典中。字典可以保存每种类型的 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()
推荐阅读
- angularjs - AngularJS - 使用 .components() 与使用 TypeScript 定义组件
- apache - 如果目录显示为可写,为什么“该目录不可被 Web 进程写入”?
- asp.net-mvc - Kentico 12 PageBuilder 缺少参考
- matrix - 使用 Julia 将未格式化的 FORTRAN 文件读入多维数组
- reactjs - 单击卡片时如何路由到具有特定卡片详细信息的页面?
- javascript - 根据范围返回数组中的对象
- c++ - 为什么必须在线程销毁之前调用 join() 或 detach() ?
- c# - 未找到命令 dotnet ef
- arrays - 在二进制数组中查找集群组
- python - 尝试使用烧瓶和 apache 运行网站时出现 404 not found 错误