前提・実現したいこと
ファイルから読み込んで、そのデータを解析するプログラムを作っています。
ファイルの中身はこのような形になっています。2つの値の隙間はタブです。
実行したところエラーが出力されますが、原因がわかりません解決方法を教えていただけないでしょうか。
超初心者のためどうしてエラーが出るのかまで説明頂けると助かります。
txt
13.218 2.65 23.8913 2.7 33.1058 2.75 40.6972 2.8 5-1.4852 2.85 6-2.8285 2.9 7-2.8285 2.95 8-5.2949 3.0 9-7.2063 3.05 10-9.7478 3.1 11-11.3379 3.15 12-11.3379 3.2 13-12.0789 3.25 14-10.8259 3.3 15-7.0937 3.35 16-2.2687 3.4 172.7694 3.45
発生している問題・エラーメッセージ
ソースコードのなかのこの部分でエラーが出力されています。
df[0] = df[0].apply(float)
出力されるエラー
Traceback (most recent call last): File "kaisekitamesi.py", line 13, in <module> df[0] = df[0].apply(float) File "/home/hydrogen/anaconda3/lib/python3.7/site-packages/pandas/core/series.py", line 3194, in apply mapped = lib.map_infer(values, f, convert=convert_dtype) File "pandas/_libs/src/inference.pyx", line 1472, in pandas._libs.lib.map_infer TypeError: float() argument must be a string or a number, not 'NoneType'
該当のソースコード
Python
1# coding: utf-8 2import pandas as pd 3import matplotlib.pyplot as plt 4# 仮データ作成 5t=open('date1.txt') #この中に解析するデータが入っている 6text=t.read() 7through_line = 30 # 検出中スルー幅(本来は100) 8threshold = 12 # 閾値の設定 9 10text = text.split('\n') #改行で分ける 11text = [i.split() for i in text] #隙間で分ける 12df = pd.DataFrame(text) 13df[0] = df[0].apply(float) 14df[1] = df[1].apply(float) # ①ここでfloat型のdf完成 15df[2] = df[0].shift() # ②shiftカラムをつくる 16df[3] = abs(df[2] - df[0]) # ③絶対値差カラムつくる 17 18threshold_list = [] # ④閾値を超えたindexの検出 19for i, j in enumerate(list(df[3])): 20 if j >= threshold: # 閾値の判断 21 threshold_list.append(i) 22#print(threshold_list) 23print(i) 24a = 0 # 検出中判断の仮変数(この変数で、2重検出を除く) 25last_list = [] # ⑤最終の開始indexリスト 26for i in threshold_list: 27 if a <= i: # 前回の検出中かどうか 28 last_list.append(i) 29 a = i+through_line # 検出中の同時出現スルー幅設定 30 31final_answer =[] # ⑥最終の数値リストのリスト 32print(len(last_list)) 33 34 35for i in last_list: 36 37 final_answer.extend(list(df[0])[i:i+through_line]) # スルー幅のリストを抽出 38 print(final_answer) 39 plt.plot(final_answer) 40 final_answer.clear() 41 42plt.show() 43print(last_list) # 最終の開始indexリスト 44 # 最終の数値リストのリスト 45df = pd.DataFrame(final_answer) 46#print(df) 47
### 試したこと 読み込むファイルの最終行に スペースが入っているか確認しましたが入っていませんでした。 13,14行目の書き方が悪いのではないかと思っていますが、書き方がわからない状態です。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。