タグ付けされた質問 「pandas-groupby」

特定の条件に基づいて変数をグループ化するために使用されます。そして、 `パンダ`ライブラリに関連してのみ使用されます

9
Pandas GroupBy出力をSeriesからDataFrameに変換する
私はこのような入力データから始めています df1 = pandas.DataFrame( { "Name" : ["Alice", "Bob", "Mallory", "Mallory", "Bob" , "Mallory"] , "City" : ["Seattle", "Seattle", "Portland", "Seattle", "Seattle", "Portland"] } ) 印刷すると次のようになります。 City Name 0 Seattle Alice 1 Seattle Bob 2 Portland Mallory 3 Seattle Mallory 4 Seattle Bob 5 Portland Mallory グループ化は非常に簡単です: g1 = df1.groupby( …

7
パンダGroupByを使用して各グループ(カウント、平均など)の統計を取得しますか?
データフレームがdfあり、そこからいくつかの列を使用してgroupby: df['col1','col2','col3','col4'].groupby(['col1','col2']).mean() 上記の方法で、必要なテーブル(データフレーム)をほぼ取得します。欠けているのは、各グループの行数を含む追加の列です。言い換えれば、私には意地悪がありますが、これらの手段を得るために使用された数の数も知りたいのです。たとえば、最初のグループには8つの値があり、2番目のグループには10というように続きます。 つまり、データフレームのグループごとの統計情報を取得するにはどうすればよいですか?

2
データフレームをピボットする方法
ピボットとは何ですか? ピボットするにはどうすればよいですか? これはピボットですか? ロングフォーマットからワイドフォーマット? ピボットテーブルについての質問をたくさん見てきました。ピボットテーブルについて質問していることを知らなくても、通常はそうです。ピボットのすべての側面を網羅する標準的な質問と回答を書くことは事実上不可能です... ...しかし、私はそれを試してみるつもりです。 既存の質疑応答の問題は、多くの既存の適切な解答を使用するために、OPが一般化するのが難しいニュアンスに質問が集中していることが多いことです。ただし、すべての回答が包括的な説明を試みることはありません(これは困難な作業であるため) 私のグーグル検索からいくつかの例を見てください パンダでデータフレームをピボットする方法は? 良い質問と答え。しかし、答えはほとんど説明せずに特定の質問に答えるだけです。 パンダのピボットテーブルからデータフレームへ この質問では、OPはピボットの出力に関係しています。つまり、列の外観。OPはRのように見せたかったのですが、これはパンダのユーザーにとってはあまり役に立ちません。 データフレームをピボットするパンダ、重複する行 別のまともな質問ですが、答えは1つの方法、すなわち pd.DataFrame.pivot したがって、誰かが検索を行うpivotと、散発的な結果が得られますが、特定の質問には答えられない可能性があります。 セットアップ 列と関連する列の値に目立つように名前を付けて、以下の回答でどのようにピボットを行うかに対応していることに気付くでしょう。 import numpy as np import pandas as pd from numpy.core.defchararray import add np.random.seed([3,1415]) n = 20 cols = np.array(['key', 'row', 'item', 'col']) arr1 = (np.random.randint(5, size=(n, 4)) // [2, 1, 2, 1]).astype(str) …


11
groupbyを使用してグループの最大数を持つ行を取得します。
列でcountグループ化した後、列の最大値を持つパンダデータフレーム内のすべての行を見つけるにはどうすればよい['Sp','Mt']ですか? 例1:次のdataFrame ['Sp','Mt']。 Sp Mt Value count 0 MM1 S1 a **3** 1 MM1 S1 n 2 2 MM1 S3 cb 5 3 MM2 S3 mk **8** 4 MM2 S4 bg **10** 5 MM2 S4 dgd 1 6 MM4 S2 rd 2 7 MM4 S2 cb 2 8 MM4 S2 …

5
キーでパンダのグループ化データフレームにアクセスする方法
キーでgroupbyオブジェクトの対応するgroupbyデータフレームにアクセスするにはどうすればよいですか? 次のgroupbyを使用します。 rand = np.random.RandomState(1) df = pd.DataFrame({'A': ['foo', 'bar'] * 3, 'B': rand.randn(6), 'C': rand.randint(0, 20, 6)}) gb = df.groupby(['A']) 反復してキーとグループを取得できます。 In [11]: for k, gp in gb: print 'key=' + str(k) print gp key=bar A B C 1 bar -0.611756 18 3 bar -1.072969 10 5 bar -2.301539 …

8
NaN(欠損)値を持つパンダGroupBy列
私はグループ化したい列に多くの欠損値を持つDataFrameがあります: import pandas as pd import numpy as np df = pd.DataFrame({'a': ['1', '2', '3'], 'b': ['4', np.NaN, '6']}) In [4]: df.groupby('b').groups Out[4]: {'4': [0], '6': [2]} PandasがNaNターゲット値を持つ行を削除したことを確認してください。(これらの行を含めたい!) このような操作が多く(多くのcolsに欠損値がある)、中央値(通常はランダムフォレスト)よりも複雑な関数を使用する必要があるため、複雑なコードを記述しないようにします。 助言がありますか?これのために関数を書くべきですか、それとも簡単な解決策がありますか?

3
pandas GroupBy.agg()を使用した同じ列の複数の集計
複数回呼び出す必要なしf1, f2に、2つの異なる集計関数を同じ列に適用するpandas組み込みの方法はありますか?df["returns"]agg() データフレームの例: import pandas as pd import datetime as dt pd.np.random.seed(0) df = pd.DataFrame({ "date" : [dt.date(2012, x, 1) for x in range(1, 11)], "returns" : 0.05 * np.random.randn(10), "dummy" : np.repeat(1, 10) }) 構文的には間違っていますが、直感的には正しい方法は次のとおりです。 # Assume `f1` and `f2` are defined for aggregating. df.groupby("dummy").agg({"returns": f1, "returns": f2}) もちろん、Pythonでは重複するキーは許可されていません。への入力を表現する他の方法はありますagg()か?おそらく、タプルのリストは[(column, …

10
GroupBy pandasDataFrameと最も一般的な値を選択します
3つの文字列列を持つデータフレームがあります。最初の2つのすべての組み合わせに対して、3番目の列の1つの値だけが有効であることを私は知っています。データをクリーンアップするには、最初の2列でデータフレームごとにグループ化し、組み合わせごとに3番目の列の最も一般的な値を選択する必要があります。 私のコード: import pandas as pd from scipy import stats source = pd.DataFrame({'Country' : ['USA', 'USA', 'Russia','USA'], 'City' : ['New-York', 'New-York', 'Sankt-Petersburg', 'New-York'], 'Short name' : ['NY','New','Spb','NY']}) print source.groupby(['Country','City']).agg(lambda x: stats.mode(x['Short name'])[0]) コードの最後の行が機能せず、「キーエラー '短い名前'」と表示され、都市のみでグループ化しようとすると、AssertionErrorが発生します。どうすれば修正できますか?

5
Pandas groupbyを使用して、複数の行の文字列を連結します
Pandasのgroupedbyに基づいて、データフレーム内の複数の文字列をマージしたいと思います。 これはこれまでの私のコードです: import pandas as pd from io import StringIO data = StringIO(""" "name1","hej","2014-11-01" "name1","du","2014-11-02" "name1","aj","2014-12-01" "name1","oj","2014-12-02" "name2","fin","2014-11-01" "name2","katt","2014-11-02" "name2","mycket","2014-12-01" "name2","lite","2014-12-01" """) # load string as stream into dataframe df = pd.read_csv(data,header=0, names=["name","text","date"],parse_dates=[2]) # add column with month df["month"] = df["date"].apply(lambda x: x.month) 最終結果を次のようにしたいと思います。 groupbyを使用して、「text」列の文字列を何らかの連結で適用する方法がわかりません。助けていただければ幸いです。

4
日時月ごとのパンダデータフレームグループ
csvファイルについて考えてみます。 string,date,number a string,2/5/11 9:16am,1.0 a string,3/5/11 10:44pm,2.0 a string,4/22/11 12:07pm,3.0 a string,4/22/11 12:10pm,4.0 a string,4/29/11 11:59am,1.0 a string,5/2/11 1:41pm,2.0 a string,5/2/11 2:02pm,3.0 a string,5/2/11 2:56pm,4.0 a string,5/2/11 3:00pm,5.0 a string,5/2/14 3:02pm,6.0 a string,5/2/14 3:18pm,7.0 これを読み込んで、日付列を日時形式に再フォーマットできます。 b=pd.read_csv('b.dat') b['date']=pd.to_datetime(b['date'],format='%m/%d/%y %I:%M%p') 私は月ごとにデータをグループ化しようとしています。月にアクセスし、それによってグループ化する明白な方法があるはずのようです。しかし、私はそれをすることができないようです。誰かが方法を知っていますか? 私が現在試しているのは、日付によるインデックスの再作成です。 b.index=b['date'] 私は次のように月にアクセスできます: b.index.month ただ、月ごとにまとめる機能が見つからないようです。

2
pandas groupby()。sum()の出力から新しい列を作成するにはどうすればよいですか?
groupby計算から新しい列を作成しようとしています。以下のコードでは、各日付の正しい計算値を取得しています(以下のグループを参照)が、それを使用して新しい列(df['Data4'])を作成しようとすると、NaNが取得されます。そのData3ため、すべての日付の合計を使用してデータフレームに新しい列を作成し、それを各日付行に適用しようとしています。たとえば、2015-05-08は2行にあり(合計は50 + 5 = 55)、この新しい列では、両方の行に55を入れたいと思います。 import pandas as pd import numpy as np from pandas import DataFrame df = pd.DataFrame({ 'Date' : ['2015-05-08', '2015-05-07', '2015-05-06', '2015-05-05', '2015-05-08', '2015-05-07', '2015-05-06', '2015-05-05'], 'Sym' : ['aapl', 'aapl', 'aapl', 'aapl', 'aaww', 'aaww', 'aaww', 'aaww'], 'Data2': [11, 8, 10, 15, 110, 60, 100, 40], 'Data3': …

9
パンダ:各グループの平均で不足している値を埋める
これは簡単なはずですが、私が見つけた最も近いものはこの投稿です: パンダ:グループ内の不足している値を埋めていますが、それでも問題を解決できません...。 次のデータフレームがあるとします df = pd.DataFrame({'value': [1, np.nan, np.nan, 2, 3, 1, 3, np.nan, 3], 'name': ['A','A', 'B','B','B','B', 'C','C','C']}) name value 0 A 1 1 A NaN 2 B NaN 3 B 2 4 B 3 5 B 1 6 C 3 7 C NaN 8 C 3 そして、「NaN」に各「名前」グループの平均値を入力したいと思います。 name …

2
DataFrame、Python-3から上位N個の最小値を見つける方法
私はフィールド「年齢」のデータフレームの下にいます、データフレームからトップ3最小年齢を見つける必要があります DF = pd.DataFrame.from_dict({'Name':['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'], 'Age':[18, 45, 35, 70, 23, 24, 50, 65, 18, 23]}) DF['Age'].min() リストのトップ2年齢、つまり18、23が欲しい、これを達成する方法は? 注:DataFrame-DFには年齢の重複が含まれます。つまり、18と23が2回繰り返され、一意の値が必要です。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.