前提・実現したいこと
お世話になります。
プログラミングの学習を始めて2週間の初心者です。
何をお伝えすればよいかまだ分からないため、必要な情報が不足していたら申し訳ありません。
pythonにてCSVファイルのデータを集計するプログラムを作成しております。
1.対象のCSVファイルの対象の列から全行の数値(正、負、0)を読み取り、
2.その数値を絶対値にして
3.閾値(30)以上のデータだけを抽出し
4.平均化して
5.1~4を繰り返して列を結合させ、
6.1つのCSVファイルに複数の列の平均値を出力するというプログラムを作成しています。
大変見苦しいプログラムかと思いますが、お力添えいただけると幸いです。
発生している問題・エラーメッセージ
平均化したデータの一部が-2147483648となります。
本来ならば1000にも満たない数字です。
うまく平均化することができる列もありますが、
いくつかのデータは-214783648となります。
該当のソースコード
python
1import pandas as pd 2import glob 3from datetime import datetime as dt 4from datetime import timedelta 5 6c_list = ['列名1','列名2','列名3','列名4','列名5','列名6'] 7 8df_0 = pd.DataFrame() 9for i in range(0,6): 10 target = c_list[i] 11 df = pd.read_csv('入力するファイル.csv',encoding= 'shift-jis') 12 df = df[target].abs() 13 df = df.fillna(0) 14 df = df[df>=30] 15 df = df.describe()['mean'].round(0) 16 df = df.astype('int') 17 print(target + '平均' + str(df)) 18 df_1 = pd.DataFrame([[int(df)]],columns=[target],index=[date]) 19 df_0 = pd.concat([df_0,df_1],axis=1) 20 i += 1 21df_0.to_csv('出力するファイル.csv'.,encoding= 'shift-jis') 22
試したこと
df = df[df>=30]
の行を抜くと-2147483648は出なくなりましたが、
閾値未満の数字は無視する必要があります。
よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
python 3.9.1
回答1件
あなたの回答
tips
プレビュー