https://pypi.org/project/hrv-analysis/
Traceback (most recent call last):
File "K:\SHiseXXXXXido\2024\06\rri\rri2.py", line 1, in <module>
from hrvanalysis import remove_outliers, remove_ectopic_beats, interpolate_nan_values, get_time_domain_features
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "K:\XXXXX\2024\06\rri\.venv\Lib\site-packages\hrvanalysis\__init__.py", line 8, in <module>
from hrvanalysis.extract_features import (get_time_domain_features, get_frequency_domain_features,
File "K:\XXXXX\2024\06\rri\.venv\Lib\site-packages\hrvanalysis\extract_features.py", line 12, in <module>
from astropy.stats import LombScargle
ImportError: cannot import name 'LombScargle' from 'astropy.stats' (K:\XXXXX\2024\06\rri\.venv\Lib\site-packages\astropy\stats\__init__.py)
Lib\site-packages\hrvanalysis\extract_features.py
from astropy.stats import LombScargle
↓
from astropy.timeseries import LombScargle
このエラーの原因。
LombScargleクラスはastropy 3.1以降astropy.timeseriesに移動しており、astropy.stats側は非推奨を経て新しいastropy(7.0以降)で削除されている。hrv-analysisが古い書き方(astropy.stats)を参照しているのに、インストールされているastropyが新しいためimportに失敗している。
対処の手順。
1. 修正を当てる前に、入れているastropyのバージョンを確認する。`pip show astropy` や `python -c "import astropy; print(astropy.__version__)"` で分かる。
2. このページのとおり `from astropy.stats import LombScargle` を `from astropy.timeseries import LombScargle` に書き換える。
3. hrv-analysisのバージョンによってはほかの箇所にも古い書き方が残っていることがある。import後に別のImportErrorが出たら、呼び出し元のパスを追って同様に直す。
4. ライブラリ側を直したくない場合は、環境を分けて古いastropyを入れる方法もあるが、ほかの依存との衝突に注意する。
raise ValueError("If using all scalar values, you must pass an index")
ValueError: If using all scalar values, you must pass an index
事前にインデックスを追加し指定する
XXXX['time'] = i
df = pd.DataFrame.from_dict(XXXX,index=['time'])
補足。dictからDataFrameを作るとき、値がすべてスカラー(数値や文字列)だとpandasはインデックスを決められずこのValueErrorになる。回避策は以下の2つ。
pd.DataFrame([XXXX]) のように1行のリストで包む方法もある。こちらは列名が元のキー、行が1つだけのDataFrameになる。Q. hrv-analysisを入れてもimportできない。
A. 依存ライブラリ(numpy、astropyなど)のバージョンが新しいか古いかが原因になりやすい。まずエラーの全文と各パッケージのバージョン(pip list)を確認する。
Q. astropy.stats.LombScargleはもう使えない?
A. 新しいastropyではastropy.stats側が削除されている。astropy.timeseries側を使う。
Q. 環境を壊さずに試したい。
A. venv(仮想環境)を作って、その中で修正版がimportできるか確認する。エラーメッセージのパス(Lib\site-packages\hrvanalysis...)を見ると、今の環境がどのPythonからライブラリを読んでいるかが分かる。
Q. from_dict以外でdictをDataFrameにする方法は?
A. pd.DataFrame([XXXX]) でスカラーだけのdictも1行DataFrameにできる。複数行にしたければ pd.DataFrame([XXXX, YYYY]) のように並べる。
🤖 このページにはAIエージェント(ノア)による編集・加筆が含まれます。内容の正確性は保証できないため、重要な判断は一次情報でご確認ください。