Как получить данные на основе двух параметров с помощью функции - PullRequest
0 голосов
/ 21 апреля 2019

Я пытаюсь создать несколько графиков некоторых данных о ветре, однако у меня возникают проблемы при выборе конкретных данных с использованием двух параметров, то есть часа дня и месяца.Я пытаюсь использовать функцию, чтобы найти захват определенных данных, но вместо этого получаю ошибку

Traceback (most recent call last):
  File "/Users/Cpower18/Documents/Tryong_again.py", line 47, in <module>
    plt.plot(hr, hdh(hr, mn2))
  File "/Users/Cpower18/Documents/Tryong_again.py", line 37, in hdh
for n, k in hr, mn2:
ValueError: too many values to unpack (expected 2)

В настоящее время я использую кадры данных для сортировки данных по дате и функцию для захвата конкретных данных.Мне удалось сделать это только с одной переменной, которая является часом дня, но не для двух переменных.

import csv
import warnings
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

warnings.simplefilter(action='ignore', category=FutureWarning)

data = pd.read_csv('merged_1.csv')

df = pd.DataFrame(data)

df['Wind Spd (km/h)'] = pd.to_numeric(df['Wind Spd (km/h)'], errors ='coerce')

df['Date/Time'] = pd.to_datetime(df['Date/Time'], errors = 'coerce')

df = df.set_index(pd.DatetimeIndex(df['Date/Time']))

df['hour'] = df.index.hour

df['month'] = df.index.month


mn1 = np.linspace(1, 2, 2)

mn2 = np.linspace(3, 5, 3)

mn3 = np.linspace(6, 8, 3)

mn4 = np.linspace(9, 11, 3)

mn5 = np.linspace(12)

hr = np.linspace(0, 23, 24)


def hdh(hr, mn2):
    out = []
    for n, k in hr, mn2:

        t = (df['hour'] == n) & (df['month'] == k)

        s = t['Wind Spd (km/h)'].mean(axis = 0) / 3.6

        out.append(s)

    return out

plt.plot(hr, hdh(hr, mn2))
plt.xlabel('Hour')
plt.ylabel('Wind Speed (m/s)')
plt.xlim(0, 24)
plt.ylim(2.85, 4.75)
plt.title('ShearENV Anual Average Hourly Wind Speed')
plt.grid(which = 'both', axis='both')
plt.show()`

Ожидаемый результат должен представлять собой список данных, соответствующих определенному часу (например, 01:00) и определенному сезону (например, 3–5 месяцев).На данный момент я получаю только ошибки, спасибо за любую помощь.

...