#python #pandas #numpy #fft #vibration
#python #pandas #numpy #fft #вибрация
Вопрос:
У меня есть этот фрейм данных о вибрации автомобиля, и я хочу рассчитать доминирующую частоту вибрации. Я знаю, что мы можем вычислить это, используя numpy.fft, но я понятия не имею, как я могу применить numpy.fft к моему фрейму данных. Пожалуйста, просветите меня, как это сделать на python. Спасибо.
Комментарии:
1. Будет полезно, если вы сможете поделиться образцами данных.
2. я хотел бы поделиться своими примерами данных, но как я могу это сделать?
Ответ №1:
Столбец dataframe фактически является массивом NumPy
df = pd.DataFrame({"Vibration":[random.uniform(2,10) for i in range(10)]})
df["fft"] = np.fft.fft(df["Vibration"].values)
print(df.to_string())
вывод
Vibration fft
0 8.212039 63.320213 0.000000j
1 5.590523 2.640720-2.231825j
2 8.945281 -2.977825-5.716229j
3 6.833036 4.657765 5.649944j
4 5.150939 -0.216720-0.445046j
5 3.174186 10.592292 0.000000j
6 9.054791 -0.216720 0.445046j
7 5.830278 4.657765-5.649944j
8 5.593203 -2.977825 5.716229j
9 4.935937 2.640720 2.231825j
пакетирование на каждые 15 строк
df = pd.DataFrame({"Vibration":[random.uniform(2,10) for i in range(800)]})
df.assign(
fft=df.groupby(df.index // 15)["Vibration"].transform(lambda s: np.fft.fft(list(s)).astype("object")),
grpfirst=df.groupby(df.index // 15)["Vibration"].transform(lambda s: list(s)[0])
)
Комментарии:
1. спасибо! У меня 800 строк в моем фрейме данных, возможно ли это, если я хочу вычислить fft для каждых 15 строк?
2. спасибо! могу ли я узнать, почему grpfirst и fft дают разные значения?
3. Я не квант, поэтому не знаком с математикой calc…
Ответ №2:
Не зная, как выглядит фрейм данных и какие поля вам нужно использовать для ваших вычислений, вы можете применить любую функцию к фрейму данных с помощью .apply()
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas .DataFrame.apply.html