質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

2回答

2195閲覧

pandasを用いて財務諸表のデータを分析

noob_miil

総合スコア1

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2020/07/27 12:58

前提・実現したいこと

閲覧ありがとうございます。
pandasを用いて、財務諸表データを分析しようとしたところエラーが発生しました。
発生したエラーは「カラムエラー」と呼ばれるものらしく、カラムサイズが一定でないとの事だったのでカラム名を新しく作成してみました。
カラム名を入れて実行したところ、エラーは消えたのですが、目的とする場所からデータを抽出しようとした際、本来数値データが入っているはずなのですが、データが入っていないようで「NO」と表示されていたり、「NaN」と表示されています。
数値扱いではなく、文字扱いされているのではと考え、カンマを消してみたりしたのですが、変わらず...
dtypes: object(9)と表示されていたので、float型に変換すればいいのかと思い試してみたのですが、カラム名を入れる前に一番上にあった、IDや項目名が入ってるヘッダーが変換できないようでエラーが出てしまいました...

私の目的としては、元の財務諸表データをpandasで正確に読みこみ、分析する為に必要なデータを抽出する事なのですが、このデータを読み込む際に問題がおこっていると考えられ困っております。
私自身、pythonに触れて日が浅いため、どなたか有識者様から何卒お力添えいただきたく存じます。


元データはXBRL形式ですが、csv形式に変換しております。
文字コードは"Shift_jis"や"cp932"だとエラーがでたため"UTF-16LE"としています。

発生している問題・エラーメッセージ

#以下はエラーメッセージではなく、実行したところ表示されたものです(私は意図してない) c00 c01 c02 ... c06 c07 c08 0 要素ID\t"項目名"\t"コンテキストID"\t"相対年度"\t"連結・個別"\t"期間・... NaN NaN ... 1 jpdei_cor:NumberOfSubmissionDEI\t"提出回数、DEI"\t"... NaN NaN ... NaN NaN NaN 2 jpcrp_cor:RevenueIFRSSummaryOfBusinessResults... NaN NaN ... NaN NaN NaN 3 jpcrp_cor:RevenueIFRSSummaryOfBusinessResults... NaN NaN ... NaN NaN NaN 4 jpcrp_cor:RevenueIFRSSummaryOfBusinessResults... NaN NaN ... NaN NaN NaN [5 rows x 9 columns] 9 <class 'pandas.core.frame.DataFrame'> Int64Index: 710 entries, 0 to 709 Data columns (total 9 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 c00 710 non-null object 1 c01 710 non-null object 2 c02 710 non-null object 3 c03 710 non-null object 4 c04 710 non-null object 5 c05 710 non-null object 6 c06 710 non-null object 7 c07 710 non-null object 8 c08 710 non-null object dtypes: object(9) memory usage: 30.5+ KB Index(['c00', 'c01', 'c02', 'c03', 'c04', 'c05', 'c06', 'c07', 'c08'], dtype='object') 売上総利益 NO

該当のソースコード

import pandas as pd
col_names = [ 'c{0:02d}'.format(i) for i in range(9) ]
df = pd.read_csv("test.csv",encoding="UTF-16LE",names = col_names)
df = df.fillna("NO")
print(len(df.columns))
df.info()
print(df.columns)

print("売上総利益",df.loc[280]["c08"]) ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

元データはXBRL形式ですが、csv形式に変換しております。

と書かれていますが、文字列に"\t"が含まれていますので、区切り文字がコンマではなくタブではないかと予想します。そのためpd.read_csv()の引数にsep='\t'もしくはdelim_whitespace=Trueをつけると上手くパースできるのではないでしょうか。

投稿2020/07/27 15:17

yymmt

総合スコア1615

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

拝見させていただいたコード、出力結果を見る限り早い段階でNaNのデータが入っていると考えれると思います。可能性として、test.csvの読み込む以前のデータに問題があることも考えられると思いますが、
pd.read_csv("test.csv",encoding="UTF-16LE")を実行した結果というのはわかりますでしょうか?

また、冒頭のこの部分についてどの処理を経て出力されたのかが見受けられなかったので、それについても補足していただければと思っています。
c00 c01 c02 ... c06 c07 c08
0 要素ID\t"項目名"\t"コンテキストID"\t"相対年度"\t"連結・個別"\t"期間・... NaN NaN ...
1 jpdei_cor:NumberOfSubmissionDEI\t"提出回数、DEI"\t"... NaN NaN ... NaN NaN NaN
2 jpcrp_cor:RevenueIFRSSummaryOfBusinessResults... NaN NaN ... NaN NaN NaN
3 jpcrp_cor:RevenueIFRSSummaryOfBusinessResults... NaN NaN ... NaN NaN NaN
4 jpcrp_cor:RevenueIFRSSummaryOfBusinessResults... NaN NaN ... NaN NaN NaN

[5 rows x 9 columns]

投稿2020/07/27 14:49

crinoid

総合スコア26

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問