使用Pandas統計分析數據

假設有如下的數據

在這裏插入圖片描述

初級解答:知識沒有全用上,數學成績NaN沒解決

import pandas as pd
from pandas import Series, DataFrame
data = DataFrame(pd.read_excel('data1.xlsx'))
df = DataFrame(data)
df = df.drop_duplicates()
def sum(df):
    df['zcj'] = (df[u'語文']+df[u'英語']+df[u'數學'])
    return df
df = df.apply(sum, axis=1)
print(df)

更改:高級解答

將上圖的原始數據的學科的名稱更改成改爲英文,下面使用Pandas的DataFrame數據操作方法更改成爲中文。

import pandas as pd
data = {'Chinese': [66, 95, 93, 90, 80, 80], 'English': [65, 85, 92, 88, 90, 90],
        'Math': [None, 98, 96, 77, 90, 90]}
df = pd.DataFrame(data, index=['張飛', '關羽', '趙雲', '黃忠', '典韋', '典韋'],
                  columns=['English', 'Math', 'Chinese'])
# 數據清洗                  
# 1、去除重複行
df = df.drop_duplicates()
# 2、列名重新排序:按照列名進行重新的排序
cols = ['Chinese', 'English', 'Math']
df = df.filter(cols, axis=1)
# 3、列名改爲中文
df.rename(columns={'Chinese': '語文', 'English': '英語',
                   'Math': '數學'}, inplace=True)
def total_score(df):
    df['總分'] = df['語文'] + df['英語'] + df['數學']
    return df
    
# 數據統計    
# 求成績的和,用 apply 方法,按照列的方式
df = df.apply(total_score, axis=1)
# 或者可以用這個方法求和
# df['總分'] = df['語文'] + df['英語'] + df['數學']
# 按照總分排序,從高到低,此時有缺失值 - 這是我想不到的
df.sort_values(['總分'], ascending=[False], inplace=True)
# 打印顯示成績單信息,張飛有空值
print(df.isnull().sum())
print(df.describe())
print(df)
# 使用數學成績均值填充張飛同學的缺失值 -這是我想不到的
df['數學'].fillna(df['數學'].mean(), inplace=True)
# 再次求成績的和並打印顯示成績單情況
df = df.apply(total_score, axis=1)
print(df.isnull().sum())
print(df.describe())
print(df)
'''
語文    0
英語    0
數學    1
總分    1
dtype: int64
              語文         英語         數學          總分
count   5.000000   5.000000   4.000000    4.000000
mean   84.800000  84.000000  90.250000  268.500000
std    11.987493  10.931606   9.464847   12.922848
min    66.000000  65.000000  77.000000  255.000000
25%    80.000000  85.000000  86.750000  258.750000
50%    90.000000  88.000000  93.000000  269.000000
75%    93.000000  90.000000  96.500000  278.750000
max    95.000000  92.000000  98.000000  281.000000
      語文    英語    數學     總分
趙雲  93.0  92.0  96.0  281.0
關羽  95.0  85.0  98.0  278.0
典韋  80.0  90.0  90.0  260.0
黃忠  90.0  88.0  77.0  255.0
張飛  66.0  65.0   NaN    NaN
語文    0
英語    0
數學    0
總分    0
dtype: int64
              語文         英語         數學          總分
count   5.000000   5.000000   5.000000    5.000000
mean   84.800000  84.000000  90.250000  259.050000
std    11.987493  10.931606   8.196798   23.911556
min    66.000000  65.000000  77.000000  221.250000
25%    80.000000  85.000000  90.000000  255.000000
50%    90.000000  88.000000  90.250000  260.000000
75%    93.000000  90.000000  96.000000  278.000000
max    95.000000  92.000000  98.000000  281.000000
      語文    英語     數學      總分
趙雲  93.0  92.0  96.00  281.00
關羽  95.0  85.0  98.00  278.00
典韋  80.0  90.0  90.00  260.00
黃忠  90.0  88.0  77.00  255.00
張飛  66.0  65.0  90.25  221.25
'''
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章