假設有如下的數據
初級解答:知識沒有全用上,數學成績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
'''