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

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

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

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

Q&A

解決済

1回答

823閲覧

Pythonで新たなデータフレームを作成したい

firehiko18

総合スコア37

Python

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

0グッド

0クリップ

投稿2021/09/29 15:21

データ(df)
|CD|社名|決算期|決算期間|売上|営業利益
|:--|:--:|--:|--:||--:|
|1234|A|2021年度|第一四半期|100|20
|1234|A|2020年度|第一四半期|80|10
|1234|A|2019年度|第一四半期|60|10
|1234|A|2021年度|第二四半期|200|40
|1234|A|2020年度|第二四半期|160|20
|1234|A|2019年度|第二四半期|120|20
|1234|A|2021年度|第三四半期|300|60
|1234|A|2020年度|第三四半期|240|30
|1234|A|2019年度|第三四半期|180|30
|1234|A|2021年度|通期|400|80
|1234|A|2020年度|通期|320|40
|1234|A|2019年度|通期|240|40
|9876|B|2021年度|第一四半期|1000|-100
|9876|B|2020年度|第一四半期|500|100
|9876|B|2019年度|第一四半期|300|50
|9876|B|2021年度|第二四半期|2000|150
|9876|B|2020年度|第二四半期|1000|200
|9876|B|2019年度|第二四半期|600|100
|9876|B|2021年度|第三四半期|3000|200
|9876|B|2020年度|第三四半期|1500|300
|9876|B|2019年度|第三四半期|900|150
|9876|B|2021年度|通期|4000|300
|9876|B|2020年度|通期|2000|300
|9876|B|2020年度|通期|1200|200

作成後
|CD|社名|決算期|決算期間|売上|営業利益|売上前期比(%)|営業利益前期比(%)|営業利益率
|:--|:--:|--:|--:||--:|
|1234|A|2021年度|第三四半期|300|60|125.0|200.0|20.0
|4567|B|2021年度|第三四半期|3000|200|200.0|66.7|6.7

〇前提
各年度の決算期間の数字は合計です。
例:2021年度第三四半期売上=2021年度第一四半期売上+2021年度第二四半期売上+2021年度第三四半期売上
〇定義
売上前期比(%):2021年度売上÷2020年度売上(小数点第二位を四捨五入)
営業利益前期比(%):2021年度営業利益÷2020年度営業利益(小数点第二位を四捨五入)
営業利益率:2021年度営業利益÷2021年度売上(小数点第二位を四捨五入)

上記dfのデータがあります。この中から2021年度のA社,B社の第三四半期データを取り、売上前期比等を計算した上でデータフレームを表示させたいです。
よろしくお願い致します。

import pandas as pd df = pd.DataFrame ( data={"cd":1234,1234,1234,1234,1234,1234,1234,1234,1234,1234,1234,1234,9876,9876,9876,9876,9876,9876,9876,9876,9876,9876,9876,9876,], "社名":["A","A","A","A","A","A","A","A","A","A","A","A","B","B","B","B","B","B","B","B","B","B","B","B"],"決算期":["2021年度","2020年度","2019年度","2021年度","2020年度","2019年度","2021年度","2020年度","2019年度","2021年度","2020年度","2019年度","2021年度","2020年度","2019年度","2021年度","2020年度","2019年度","2021年度","2020年度","2019年度","2021年度","2020年度","2019年度"],"決算期間":["第一四半期","第一四半期","第一四半期","第二四半期","第二四半期","第二四半期","第三四半期","第三四半期","第三四半期","通期","通期","通期"],"売上":[100,80,60,200,160,120,300,240,180,400,320,240,1000,500,300,2000,1000,600,3000,1500,900,4000,2000,1200],"営業利益":[20,10,10,40,20,20,60,30,30,80,40,40,-100,100,50,150,200,100,200,300,150,300,300,200]})

使っているツールのバージョンなど補足情報
Windows10
python3.9 64bit

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

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

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

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

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

guest

回答1

0

ベストアンサー

以下です。

python

1>>> print(df) 2 cd 社名 決算期 決算期間 売上 営業利益 30 1234 A 2021年度 第一四半期 100 20 41 1234 A 2020年度 第一四半期 80 10 52 1234 A 2019年度 第一四半期 60 10 63 1234 A 2021年度 第二四半期 200 40 74 1234 A 2020年度 第二四半期 160 20 85 1234 A 2019年度 第二四半期 120 20 96 1234 A 2021年度 第三四半期 300 60 107 1234 A 2020年度 第三四半期 240 30 118 1234 A 2019年度 第三四半期 180 30 129 1234 A 2021年度 通期 400 80 1310 1234 A 2020年度 通期 320 40 1411 1234 A 2019年度 通期 240 40 1512 9876 B 2021年度 第一四半期 1000 -100 1613 9876 B 2020年度 第一四半期 500 100 1714 9876 B 2019年度 第一四半期 300 50 1815 9876 B 2021年度 第二四半期 2000 150 1916 9876 B 2020年度 第二四半期 1000 200 2017 9876 B 2019年度 第二四半期 600 100 2118 9876 B 2021年度 第三四半期 3000 200 2219 9876 B 2020年度 第三四半期 1500 300 2320 9876 B 2019年度 第三四半期 900 150 2421 9876 B 2021年度 通期 4000 300 2522 9876 B 2020年度 通期 2000 300 2623 9876 B 2019年度 通期 1200 200 27>>> df_3Q = df[df["決算期間"]=="第三四半期"].copy() 28>>> df_3Q['前年度売上'] = df_3Q["売上"].shift(-1) 29>>> df_3Q['前年度営業利益'] = df_3Q["営業利益"].shift(-1) 30>>> df_3Q_2021 = df_3Q[df_3Q["決算期"]=="2021年度"].copy() 31>>> df_3Q_2021["売上前期比(%)"] = (df_3Q_2021["売上"] / df_3Q_2021['前年度売上'] * 100).round(1) 32>>> df_3Q_2021["営業利益前期比(%)"] = (df_3Q_2021["営業利益"] / df_3Q_2021['前年度営業利益'] * 100).round(1) 33>>> df_3Q_2021["営業利益率(%)"] = (df_3Q_2021["営業利益"] / df_3Q_2021['売上'] * 100).round(1) 34>>> print(df_3Q_2021[["cd", "社名", "決算期", "決算期間", "売上", "営業利益", "売上前期比(%)", "営業利益前期比(%)", "営 業利益率(%)"]]) 35 cd 社名 決算期 決算期間 売上 営業利益 売上前期比(%) 営業利益前期比(%) 営業利益率(%) 366 1234 A 2021年度 第三四半期 300 60 125.0 200.0 20.0 3718 9876 B 2021年度 第三四半期 3000 200 200.0 66.7 6.7

投稿2021/09/29 19:41

ppaul

総合スコア24666

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

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

firehiko18

2021/09/30 22:53

ありがとうございました。
firehiko18

2021/09/30 23:57

shift(-1)は売上項目の一つ下の値を取り新たな列(ここでは前年度売上)を作るというイメージでしょうか? [今回の例で言うとインデックス0行目は売上100なので下の80を取ってくるイメージ] 仮に下の行の値が前年の数字ではなかった(例:2021年行の下が2019年の行になっている)場合は今回のコードでは厳しいということになるのでしょうか。 同じcd、同じ決算期間で前年の決算期をとることは可能なのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問