Как заставить мою программу, объединяющую CSV-файлы, перебирать несколько подпапок в каталоге?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как заставить мою программу, объединяющую CSV-файлы, перебирать несколько подпапок в каталоге?

Сообщение Anonymous »

Итак, я пытаюсь использовать Python для анализа изображений клеток, взятых из нескольких лунок 96-луночного планшета.
Мне удалось сгенерировать CSV-файл моих данных из указанных изображений из каждого поля и сгруппировать их по хорошо.
Я написал простой скрипт для объединения всех 4 CSV (я отобразил 4 поля на лунку) в каждой лунке и сгенерировал гистограмму значений одного столбца из объединенного CSV, и это работает!
Однако это работает только в том случае, если я указываю путь каждый раз, поэтому мне придется запускать его 96 раз и вручную менять путь.

Код: Выделить всё

#combine csvs in one well
import pandas as pd
import glob
import os
import matplotlib.pyplot as plt

# Get a list of all CSV files in any given directory
path = "/path/to/well/folder"
csv_files = glob.glob(os.path.join(path, "*.csv"))

# Create an empty list to store dataframes
df_list = []

# Read each CSV file and append it to the list
for file in csv_files:
df = pd.read_csv(file)
df_list.append(df)

# Concatenate all dataframes into one
combined_df = pd.concat(df_list, ignore_index=True)

# Save the combined dataframe to a new CSV file in the same place as
combined_df.to_csv('path/to/well/folder/combined.csv', index=False)
#export descriptive stats

fig=combined_df['Mean'].hist()
plt.savefig("path/to/well/folder/fig.png")
Я пытался написать программу, которая бы перебирала все подпапки (названные для каждой лунки планшета) в каталоге с именем «results», но это не сработало, и я Не знаю почему.
Вот что у меня есть на данный момент. Мы будем очень признательны за любую помощь.
Важно отметить, что конечная цель состоит в том, чтобы каждый из 4 CSV-файлов в каждой подпапке стал объединенным CSV-файлом в КАЖДОЙ подпапке, а НЕ одним большим объединенным CSV-файлом, представляющим данные. из ВСЕХ ПАПОК вместе взятых. Вот почему я не смог найти в Интернете пример, соответствующий тому, что я пытался сделать.

Код: Выделить всё

import pandas as pd
import glob
import os
import matplotlib.pyplot as plt

rootdir = "path/to/folder/of/well/folders"

subfolderlist = os.listdir(rootdir)
print(subfolderlist)

for i in subfolderlist:
if not i.startswith('.'):
print(os.listdir(os.path.join(rootdir,i)))
csv_files = glob.glob(i, "*.csv")
df_list = []

for file in csv_files:
df = pd.read_csv(file)
df_list.append(df)
combined_df = pd.concat(df_list, ignore_index=True)
combined_df.to_csv(i + '/combined.csv', index=False)
fig=combined_df['Mean'].hist()
plt.savefig(i + '/fig.png')

строка «if not i.startswith('.'): указывает на необходимость игнорировать файл .DS_Store, который также находится в этой большей папке, поэтому я исправил эту ошибку.Я получаю следующую ошибку:

Код: Выделить всё

csv_files = glob.glob(i, "*.csv")

TypeError: glob() takes 1 positional argument but 2 were given
Но я дал ему только один позиционный аргумент — «i», который должен представлять каждый подкаталог в основном каталоге, верно? Я не уверен, почему это, которое отлично работало, когда я использовал (путь, «*.csv») для запуска файла в одной папке, где путь был назначен конкретному каталогу, не работает сейчас, когда я пытаюсь заставить его перебирать несколько каталогов.
Поможете?

Подробнее здесь: https://stackoverflow.com/questions/792 ... lders-in-a
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»