panda mendapatkan rata-rata / rata-rata kolom

155

Saya tidak bisa mendapatkan rata-rata atau rata-rata kolom dalam panda. A memiliki kerangka data. Tak satu pun dari hal yang saya coba di bawah ini memberi saya rata-rata kolomweight

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

Berikut ini mengembalikan beberapa nilai, bukan satu:

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

Begitu juga ini:

allDF.groupby('weight').mean()
Pizza pepperoni
sumber
Kemungkinan duplikat tentang cara mendapatkan rata-rata nilai kolom dataframe
Jeru Luke
df.groupby('weight')bukan yang Anda inginkan, karena membagi df menjadi kolom terpisah, masing-masing dengan nilai bobot yang berbeda. Alih-alih hanyadf['weight'].mean()
smci
allDF. weight.mean ()
DataFramed

Jawaban:

267

Jika Anda hanya menginginkan rata-rata weightkolom, pilih kolom (yang merupakan Seri) dan panggil .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
DSM
sumber
1
dan bagaimana jika saya ingin mendapatkan rata-rata dari setiap kolom?
Chris
3
@Chris df.describe ()
Abhishek Poojary
2
@Chris df.mean () memberi Anda bobot setiap kolom dan mengembalikannya secara seri.
emschorsch
24

Coba df.mean(axis=0), axis=0argumen menghitung rata-rata kolom dari dataframe sehingga hasilnya akan menjadi axis=1baris bijak sehingga Anda mendapatkan beberapa nilai.

Chandu
sumber
13

Cobalah untuk mencoba print (df.describe()). Saya harap ini akan sangat membantu untuk mendapatkan deskripsi keseluruhan dari kerangka data Anda.

nainometer
sumber
1
display(df.describe())lebih baik (di Jupyter Notebooks) karena displaydari ipython menyediakan HTML yang diformat daripada ASCII, yang lebih bermanfaat secara visual / menyenangkan.
Zhanwen Chen
6

kamu bisa memakai

df.describe() 

Anda akan mendapatkan statistik dasar dari kerangka data dan untuk mendapatkan rata-rata kolom tertentu yang dapat Anda gunakan

df["columnname"].mean()
Arun Singh
sumber
1
Ini adalah duplikat dari jawaban yang disebutkan di atas.
Mehdi Boukhechba
6

Anda juga dapat mengakses kolom menggunakan notasi titik (juga disebut akses atribut) dan kemudian menghitung artinya:

df.your_column_name.mean()
Nikos Tavoularis
sumber
4

Berarti untuk setiap kolom di 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

dan jika Anda ingin rata-rata semua kolom:

df.stack().mean()
6.0
Harvey
sumber
1

Selain itu jika Anda ingin mendapatkan roundnilai setelah menemukan 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
Ny. Tanvir Raihan
sumber
1

Anda dapat menggunakan salah satu dari dua pernyataan di bawah ini:

numpy.mean(df['col_name'])
# or
df['col_name'].mean()
davidbilla
sumber
Tolong, perkaya jawaban Anda dengan komentar yang tepat. Kalau tidak, kemungkinan akan ditandai untuk dihapus
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())
PEMBURU
sumber
0

Anda cukup mencari: df.describe () yang akan memberi Anda semua perincian yang relevan yang Anda butuhkan, tetapi untuk menemukan nilai min, maks, atau rata-rata dari kolom tertentu (misalnya 'bobot' dalam kasus Anda), gunakan:

    df['weights'].mean(): For average value
    df['weights'].max(): For maximum value
    df['weights'].min(): For minimum value
SHAGUN SHARMA
sumber