Отслеживание фитнеса с использованием Python Numpy и модуля Matplotlib. Берет последние данные из указанной папки и сохраняет их в массиве numpy

#python #arrays #python-3.x #numpy #matplotlib

Вопрос:

У меня есть папка fitness_tracker, где у меня больше папок, таких как местоположение GPS 2021-10-23. единственное различие между папками-это дата. ВО всех этих вложенных папках есть CSV-файл с именем Необработанные данные. Необработанные данные включают в себя данные о широте и скорости во времени в разных столбцах. я хочу написать программу, которая войдет в fitness_tracker, возьмет последние папки ( скажем, 5 из 10 папок), прочитав имена файлов, войдет в эти папки и прочитает файлы csv с необработанными данными и сохранит данные о времени в одном матричном массиве. прямо сейчас я могу сделать это для одного файла, используя NUMPY.

я хочу прочитать значение времени из необработанных данных из отдельной папки и сохранить его в матрице time = np.array([t1, t2, t3,t4,t5]) , а затем использовать эти данные для построения графика с помощью библиотеки matplot

это программа, которую я сейчас запускаю.

 import numpy as np import matplotlib.pyplot as plt bus_data = np.loadtxt('Raw Data.csv',delimiter=',',skiprows=1) # 1a. Import GPS File time = bus_data[:,0]/60 # Second to minute latitude = bus_data[:,1] longitude = bus_data[:,2] altitude = bus_data[:,3] # Unit = Meter speed = bus_data[:,5] # Unit = Meter / second distance = bus_data[:,7] # Unit = kilometer  fig1, axs1 = plt.subplots(1, 1) axs1.plot(distance, speed, 'k.',markersize = 1, label='data') axs1.set(xlabel='Distance (km)', ylabel='Speed (m/s)') axs1.set_title('Speed over Distance') axs1.legend() plt.savefig('Speed over Distance.png',dpi=200) plt.show()  

Ответ №1:

Вот как я бы получил данные о времени из списка каталогов:

 import numpy as np from os import listdir from os.path import isfile, join  directories = [dir1, dir2, ...]  files = [] for directory in directories:  files.append([f for f in listdir(directory) if isfile(join(directory, f)) and f.endswith(".csv")])  data = [] for file in files:  data.append(np.loadtxt('Raw Data.csv',delimiter=',',skiprows=1))   time = [] for d in data:  time.append(d[:,0]/60)  

Если вы хотите получить список каталогов на основе их имени (и, следовательно, даты), вам придется проделать еще некоторую работу по анализу дат из названий папок, но я думаю, что это заслуживает нового вопроса, так как этот вопрос уже задан слишком широко, имхо.

Комментарии:

1. Привет, спасибо за отзыв. Я попробовал ваш код, но он считывает CSV-файл из каталога программы, а не из каталога, который я предоставил.

2. Я только что попробовал, и это отлично работает. Как вы предоставили каталоги?

3. Привет. Извините. это сработало отлично. я не знаю, что не так с python. Моя первая попытка провалилась . но сегодня я попробовал это снова, и это работает. Может быть, я сделал что-то не так в первый раз.