パンダは列の平均/平均を取得します


155

パンダの列の平均または平均を取得できません。Aにはデータフレームがあります。以下で試したもののどちらも、列の平均を与えませんweight

>>> allDF 
         ID           birthyear  weight
0        619040       1962       0.1231231
1        600161       1963       0.981742
2      25602033       1963       1.3123124     
3        624870       1987       0.94212

次は、1つではなく複数の値を返します。

allDF[['weight']].mean(axis=1)

これもそうです:

allDF.groupby('weight').mean()


df.groupby('weight')これは、dfを別々の列に分割し、それぞれに重みの異なる値があるため、望んだものではありませんでした。代わりにdf['weight'].mean()
smci

allDF。weight.mean()
DataFramed

回答:


266

weight列の平均のみが必要な場合は、列(系列)を選択し、次を呼び出します.mean()

In [479]: df
Out[479]: 
         ID  birthyear    weight
0    619040       1962  0.123123
1    600161       1963  0.981742
2  25602033       1963  1.312312
3    624870       1987  0.942120

In [480]: df["weight"].mean()
Out[480]: 0.83982437500000007

1
そして、すべての列の平均を取得したい場合はどうなりますか?
Chris

3
@Chris df.describe()
Abhishek Poojary 2018

2
@Chris df.mean()は各列の重みを提供し、それをシリーズで返します。
emschorsch

24

試行するとdf.mean(axis=0)axis=0引数はデータフレームの列ごとの平均を計算するため、結果axis=1は行ごとの平均になるため、複数の値が得られます。


13

print (df.describe())ショットを与えるようにしてください。データフレームの全体的な説明を取得することが非常に役立つことを願っています。


1
display(df.describe())(Jupyter Notebooksでは)ipython displayからはASCIIではなくフォーマットされたHTMLを提供するのでより優れています。
Zhanwen Chen

6

あなたは使うことができます

df.describe() 

データフレームの基本的な統計を取得し、使用できる特定の列の平均を取得します

df["columnname"].mean()

1
これは、上記の回答の複製です。
Mehdi Boukhechba

6

ドット表記(属性アクセスとも呼ばれます)を使用して列にアクセスし、その平均を計算することもできます。

df.your_column_name.mean()

4

の各列の平均 df

    A   B   C
0   5   3   8
1   5   3   9
2   8   4   9

df.mean()

A    6.000000
B    3.333333
C    8.666667
dtype: float64

すべての列の平均が必要な場合:

df.stack().mean()
6.0

1

さらに、をround見つけた後に値を取得したい場合mean

#Create a DataFrame
df1 = {
    'Subject':['semester1','semester2','semester3','semester4','semester1',
               'semester2','semester3'],
   'Score':[62.73,47.76,55.61,74.67,31.55,77.31,85.47]}
df1 = pd.DataFrame(df1,columns=['Subject','Score'])

rounded_mean = round(df1['Score'].mean()) # specified nothing as decimal place
print(rounded_mean) # 62

rounded_mean_decimal_0 = round(df1['Score'].mean(), 0) # specified decimal place as 0
print(rounded_mean_decimal_0) # 62.0

rounded_mean_decimal_1 = round(df1['Score'].mean(), 1) # specified decimal place as 1
print(rounded_mean_decimal_1) # 62.2

1

以下の2つのステートメントのいずれかを使用できます。

numpy.mean(df['col_name'])
# or
df['col_name'].mean()

適切なコメントで回答を充実させてください。それ以外の場合は、削除のマークが付けられる可能性があります
Don

0
You can easily followthe following code
    `import pandas as pd 
    import numpy as np 

    classxii = {'Name':['Karan','Ishan','Aditya','Anant','Ronit'],
        'Subject':['Accounts','Economics','Accounts','Economics','Accounts'],
        'Score':[87,64,58,74,87],
        'Grade':['A1','B2','C1','B1','A2']}
    df = pd.DataFrame(classxii,index = ['a','b','c','d','e'],columns=['Name','Subject','Score','Grade'])
    print(df)
    #use the below for mean if you already have a dataframe
print('mean of score is:')
print(df[['Score']].mean())

0

単純に次のようにすることができます:df.describe()は、必要なすべての関連詳細を提供しますが、特定の列の最小値、最大値、または平均値(たとえば、「重み」)を見つけるには、次を使用します。

    df['weights'].mean(): For average value
    df['weights'].max(): For maximum value
    df['weights'].min(): For minimum value
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.