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

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

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

COUNT は、広く使用されているSQLの関数です。COUNT関数は、行数、もしくは配列のエンティティの数をカウントします。

date

dateは、date型や日付に関する関数や処理についてのタグです

GROUP BY

GROUP BYとはSQL文のひとつで、SELECT文において特定の列の値が等しい行ごとに表をグループ化します。

Python

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

Q&A

解決済

2回答

1125閲覧

Python groupで集約し、個数を数える方法

ta.eee

総合スコア6

COUNT

COUNT は、広く使用されているSQLの関数です。COUNT関数は、行数、もしくは配列のエンティティの数をカウントします。

date

dateは、date型や日付に関する関数や処理についてのタグです

GROUP BY

GROUP BYとはSQL文のひとつで、SELECT文において特定の列の値が等しい行ごとに表をグループ化します。

Python

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

0グッド

1クリップ

投稿2020/08/06 00:37

下記のようなデータがあったとして、日ごとに個数を数えたいのですが、どうすればよいのでしょうか?

元のデータ
date, value
2020/08/01 00:00:00, A
2020/08/01 01:00:00, A
2020/08/01 02:00:00, B
2020/08/01 03:00:00, C
2020/08/01 04:00:00, A
・・・
2020/08/01 22:00:00, B
2020/08/01 23:00:00, A
2020/08/02 00:00:00, B
2020/08/02 02:00:00, C
2020/08/02 03:00:00, A
・・・

ほしいデータ
2020/08/01
A:12, B:4, C:8
2020/08/02
A:10, B:10, C:2
・・・

df.groupby(pd.Grouper(key="date", freq = '1d'))
で1日ごとにまとめてcountすればよいのかと思ったのですが、うまくいきませんでした。

ご教示いただけますと幸いです。
よろしくお願い致します。

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

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

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

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

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

guest

回答2

0

以下のようにdateを日付で丸めたday列を作り、それとvalue列をgroupbyすればよいです。

Python

1 2import pandas as pd 3from io import StringIO 4 5s = """date,value 62020/08/01 00:00:00, A 72020/08/01 01:00:00, A 82020/08/01 02:00:00, B 92020/08/01 03:00:00, C 102020/08/01 04:00:00, A 112020/08/01 22:00:00, B 122020/08/01 23:00:00, A 132020/08/02 00:00:00, B 142020/08/02 02:00:00, C 152020/08/02 03:00:00, A""" 16df = pd.read_csv(StringIO(s), parse_dates=['date']) 17df['day'] = df['date'].dt.date 18 19grp = df.groupby(['day', 'value']).count().reset_index() 20print(grp) 21""" 22 day value date 230 2020-08-01 A 4 241 2020-08-01 B 2 252 2020-08-01 C 1 263 2020-08-02 A 1 274 2020-08-02 B 1 285 2020-08-02 C 1 29"""

投稿2020/08/06 00:59

can110

総合スコア38266

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

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

ta.eee

2020/08/06 04:20

ありがとうございました!
guest

0

ベストアンサー

ピボットテーブルで集計しようとしたが、、途中が美しくない。

Python

1import pandas as pd 2 3df = pd.read_csv('hourdat.csv', parse_dates=['date'], skipinitialspace=True) 4df['day'] = df['date'].dt.date 5for v in df['value'].unique(): 6 df[v] = [int(x == v) for x in df['value']] 7 8print(pd.pivot_table(df, index='day', aggfunc=sum))
A B C day 2020-08-01 12 4 8 2020-08-02 11 11 2

投稿2020/08/06 02:25

Daregada

総合スコア11990

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

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

ta.eee

2020/08/06 04:20

ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問