【问题标题】:Read multiple file csv in pandas from a directory and store them in a array of list, each file as one observation从一个目录中读取 pandas 中的多个文件 csv 并将它们存储在一个列表数组中,每个文件作为一个观察值
【发布时间】:2018-04-29 15:56:34
【问题描述】:

我有一个文件夹,里面有 30 个 CSV 文件,名称各不相同。

我想遍历所有文件并分别使用 pandas 读取它们,并将它们存储在列表列表中。在单独阅读它们时,我还想同时从中删除一些变量,例如删除相关的列。

目前,我正在尝试这样做。

import glob
import pandas as pd
path = os.getcwd()


# Get folder path containing text files
file_list = glob.glob(path + '/*.csv')
data = []
for file_path in file_list:
    data.append(
        pd.read_csv(file_path).drop(['column1', 'column2'], axis =1))
# now you can access it outside the "for loop..."
for d in data:
    print(d) 

所以,我想将每个数据帧作为二维列表存储在一个列表中并训练我的模型,因为每个 [ [CSV][2] ][3] 文件都是一个观察值。我的 CSV 文件有 (5000,12) 个观察值。每个 CSV 或实例都有标签,即文件名。

不知道我是否朝着正确的方向前进。

len(data) 
# 30

label = [1,1,1,1,1,1,1,1,1,1,,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3]
max_length = 25 # shape of data frame after removing two variables
# define the model

model = Sequential()
model.add(Dense(24, input_dim=25, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# compile the model
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['acc'])
# summarize the model
print(model.summary())

【问题讨论】:

    标签: python python-3.x pandas neural-network


    【解决方案1】:

    我认为您可以使用 keys 从文件名创建 dictionary of DataFrames

    file_list = glob.glob(path + '/*.csv')
    dfs = {os.path.basename(fp).split('.')[0]: 
           pd.read_csv(fp).drop(['column1', 'column2'], axis=1) for fp in file_list}
    

    供选择使用:

    print (dfs['turbo1'])
    

    编辑:

    dfs=np.array([pd.read_csv(fp).drop(['column1','column2'],axis=1).values for fp in file_list])
    

    【讨论】:

    • 我希望它们存储为数组数组(或列表列表),以便我可以在相同的基础上训练我的 NN 模型。我正在编辑并进行下一步。请检查。
    • 我在上面附上了两个截图,名称为 Directory 和 CSV。 CSV 文件共有 5000 个观测值和 27 个变量。我有 30 个 CSV 文件用于训练,因此单个实​​例有 30 个 CSV 文件(5000、12)。要分类的标签是文件名,三个是唯一的。
    • 好的,所以需要dfs = {os.path.basename(fp).split('.')[0]: pd.read_csv(fp).drop(['column1', 'column2'], axis=1).values.T.tolist() for fp in file_list} 吗?将每个 DataFrame 转换为列表或列表?或dfs = {os.path.basename(fp).split('.')[0]: pd.read_csv(fp).drop(['column1', 'column2'], axis=1).values for fp in file_list} 转换为2d 数组?
    • 有时cmets复制不好,所以我添加它来回答。还是您的数据有问题?
    • dfs[0] 未显示,当我尝试转换为 numpy 数组时,我得到了空数组。我希望它像: array([df1], [df2], [df3], .....) 其中 df3 的形状为 5000,12 。
    猜你喜欢
    • 2019-07-27
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-03
    • 2019-01-02
    相关资源
    最近更新 更多