100个pandas函数实例详解(一)

100个pandas函数实例详解(一)_第1张图片

Hi,我是山月。

之前给大家介绍了100个pandas常用函数的汇总,不知道大家有没有印象。

从今天开始来我会根据具体的实例来介绍这些函数,希望能帮助大家进行巩固学习。

今天给大家介绍的是统计汇总函数里的:

min()

计算最小值

max()

计算最大值

sum()

求和

mean()

计算平均值

count()

计数(统计非缺失元素的个数)

size()

计数(统计所有元素的个数)

median()

计算中位数

实例表格【学生成绩.xlsx】数据如图所示:

100个pandas函数实例详解(一)_第2张图片

在开始具体的函数介绍前,我们先来复习下提取pandas数据的方法,忘记了的同学可以查看Python自动化办公:pandas入门教程。

'''
注意事先安装好1.2.0版本的xlrd,安装方法如下:
pip install xlrd==1.2.0
'''

import pandas as pd

scores = pd.read_excel("学生成绩.xlsx", sheet_name="Sheet1")
print('完整表格数据:')
print(scores) # 提取表格所有数据,其中scores的类型是:

print('数学成绩数据:')
math = scores["数学"]   # 提取数学成绩的数据
print(math.head(40))  # head里不放数字,默认只取前5个数字

'''
完整表格数据:
     姓名   语文  数学  英语
0    靛儿   78  51  63      
1    宝钗   91  90  59      
2    王扁   73  59  57      
3    贾敏   76  83  90      
4    时觉   69  64  83
5    来喜   90  64  94
6    袭人   77  57  66
7    司棋   73  56  74
8    小红   64  72  91
9    贾敏   77  80  54
10  薛宝钗   81  51  99
11   智善   73  83  57
12   贾琏   81  57  71
13   雪雁   85  51  92
14   凤姐   64  72  91
15  王子腾   88  57  93
16  石呆子   87  98  56
17   紫鹃   89  54  95
18   侍书   95  95  59
19   张金   61  79  75
20   夏三   69  94  66
21   忘仁   98  93  62
22   贾琼   77  60  61
23   何三   82  71  73
24   吴兴   85  68  60
25  侯晓明   69  97  70
26   雪雁   73  57  65
27   入画   81  76  54
28   小舍   89  51  61
29  贾代儒   62  98  61
30  蒋玉函  100  86  90
31  甄宝玉   97  99  63
32   翠云   80  82  50
33  甄应嘉   69  89  81
34   薛姨   63  90  64
35   翠墨   87  75  65
36   吴贵  100  51  60
37   珍珠   93  82  55
38   金哥   73  96  65
39  夏守忠   57  93  60
数学成绩数据:
0     51
1     90
2     59
3     83
4     64
5     64
6     57
7     56
8     72
9     80
10    51
11    83
12    57
13    51
14    72
15    57
16    98
17    54
18    95
19    79
20    94
21    93
22    60
23    71
24    68
25    97
26    57
27    76
28    51
29    98
30    86
31    99
32    82
33    89
34    90
35    75
36    51
37    82
38    96
39    93
Name: 数学, dtype: int64
'''

下面就是具体的函数介绍~

1、min() 和max() 函数

这两个函数是用来计算数据的最小(min)/最大(max)值。

比如我们要知道三科成绩的最高成绩和最低成绩是多少,我们可以:

import pandas as pd

scores = pd.read_excel("学生成绩.xlsx", sheet_name="Sheet1")    # 读取表格数据

for sub in ["语文", "数学", "英语"]:
    subject_line = scores[sub]
    print("现在计算的科目是:%s" %sub)

    max_score = subject_line.max()   # max()函数求数据的最大值
    print("最高分是:%s" %max_score)

    min_score = subject_line.min()  # min()函数求数据的最小值
    print("最低分是:%s" %min_score)

    print('-----')

'''
现在计算的科目是:语文
最高分是:100
最低分是:57
-----
现在计算的科目是:数学
最高分是:99
最低分是:51
-----
现在计算的科目是:英语
最高分是:99
最低分是:50
-----
'''

2、sum()、mean()、median()函数

这三个函数里,sum函数是用来求和,mean函数是用来求平均值,median函数是用来求中位数。都是很简单常用的一些数学函数。

比如我们可以根据三个函数来求:每个学生的三科成绩之和、三科成绩的平均值、中位数。

代码如下:

import pandas as pd

scores = pd.read_excel("学生成绩.xlsx", sheet_name="Sheet1")    # 读取表格数据

# 计算平均值和中位数
for sub in ["语文", "数学", "英语"]:
    subject_line = scores[sub]
    print("现在计算的科目是:%s" %sub)

    mean_score = subject_line.mean()   # mean()函数求数据的平均值
    print("平均分是:%s" %mean_score)

    median_score = subject_line.median()  # median()函数求数据的中位数
    print("分数的中位数是:%s" %median_score)

    print('-----')

# 求三科成绩之和
for i in range(40):
    student_data = scores.loc[i]
    name = student_data[0]
    sum_score = sum(student_data[1:4])
    print("%s的三科分数之和是:%s" %(name, sum_score))

'''
现在计算的科目是:语文
平均分是:79.4        
分数的中位数是:79.0  
-----
现在计算的科目是:数学
平均分是:74.525      
分数的中位数是:75.5
-----
现在计算的科目是:英语
平均分是:70.125
分数的中位数是:65.0
-----
靛儿的三科分数之和是:192
宝钗的三科分数之和是:240
王扁的三科分数之和是:189
贾敏的三科分数之和是:249
时觉的三科分数之和是:216
来喜的三科分数之和是:248
袭人的三科分数之和是:200
司棋的三科分数之和是:203
小红的三科分数之和是:227
贾敏的三科分数之和是:211
薛宝钗的三科分数之和是:231
智善的三科分数之和是:213
贾琏的三科分数之和是:209
雪雁的三科分数之和是:228
凤姐的三科分数之和是:227
王子腾的三科分数之和是:238
石呆子的三科分数之和是:241
紫鹃的三科分数之和是:238
侍书的三科分数之和是:249
张金的三科分数之和是:215
夏三的三科分数之和是:229
忘仁的三科分数之和是:253
贾琼的三科分数之和是:198
何三的三科分数之和是:226
吴兴的三科分数之和是:213
侯晓明的三科分数之和是:236
雪雁的三科分数之和是:195
入画的三科分数之和是:211
小舍的三科分数之和是:201
贾代儒的三科分数之和是:221
蒋玉函的三科分数之和是:276
甄宝玉的三科分数之和是:259
翠云的三科分数之和是:212
甄应嘉的三科分数之和是:239
薛姨的三科分数之和是:217
翠墨的三科分数之和是:227
吴贵的三科分数之和是:211
珍珠的三科分数之和是:230
金哥的三科分数之和是:234
夏守忠的三科分数之和是:210
'''

3、count()、size()函数


这两个函数都是用来计数的,只是count()函数是统计非缺失元素的个数,而size()统计的是所有元素个数。

注意pandas里对于DataFrame和Series类型的数据,只有count()方法,其size是属性。

为了更明显的显示count和size的区别,我们在表格把宝钗的数学成绩去掉。

代码:

import pandas as pd

scores = pd.read_excel("学生成绩.xlsx", sheet_name="Sheet1")    # 读取表格数据
print(scores)

# DataFrame数据
print('\n----以下是DataFrame数据的结果----')

print(type(scores))

print(scores.count())
print('--------')
print(scores.size)

# Series数据
print('\n----以下是Series数据的结果----')

name_line = scores["姓名"]
print(type(name_line))

print(name_line.count())
print('--------')
print(name_line.size)

# GroupBy数据
print('\n----以下是 GroupBy数据的结果----')

scores_head = scores.head(10)   # 提取前10个数据
groupby_chinese_same = scores_head.groupby(["语文"])['姓名']
print(type(groupby_chinese_same))

print(groupby_chinese_same.count())
print('--------')
print(groupby_chinese_same.size())

'''
     姓名   语文    数学  英语
0    靛儿   78  51.0  63      
1    宝钗   91   NaN  59      
2    王扁   73  59.0  57      
3    贾敏   76  83.0  90      
4    时觉   69  64.0  83      
5    来喜   90  64.0  94
6    袭人   77  57.0  66
7    司棋   73  56.0  74
8    小红   64  72.0  91
9    贾敏   77  80.0  54
10  薛宝钗   81  51.0  99
11   智善   73  83.0  57
12   贾琏   81  57.0  71
13   雪雁   85  51.0  92
14   凤姐   64  72.0  91
15  王子腾   88  57.0  93
16  石呆子   87  98.0  56
17   紫鹃   89  54.0  95
18   侍书   95  95.0  59
19   张金   61  79.0  75
20   夏三   69  94.0  66
21   忘仁   98  93.0  62
22   贾琼   77  60.0  61
23   何三   82  71.0  73
24   吴兴   85  68.0  60
25  侯晓明   69  97.0  70
26   雪雁   73  57.0  65
27   入画   81  76.0  54
28   小舍   89  51.0  61
29  贾代儒   62  98.0  61
30  蒋玉函  100  86.0  90
31  甄宝玉   97  99.0  63
32   翠云   80  82.0  50
33  甄应嘉   69  89.0  81
34   薛姨   63  90.0  64
35   翠墨   87  75.0  65
36   吴贵  100  51.0  60
37   珍珠   93  82.0  55
38   金哥   73  96.0  65
39  夏守忠   57  93.0  60

----以下是DataFrame数据的结果----

姓名    40
语文    40
数学    39
英语    40
dtype: int64
--------
160

----以下是Series数据的结果----

40
--------
40

----以下是 GroupBy数据的结果----

语文
64    1
69    1
73    2
76    1
77    2
78    1
90    1
91    1
Name: 姓名, dtype: int64
--------
语文
64    1
69    1
73    2
76    1
77    2
78    1
90    1
91    1
Name: 姓名, dtype: int64
'''

我们可以看到DataFrame数据里的count方法计算出来的四个数据之和是159(40+40+39+40),但属性size的结果为160。

这就是因为宝钗的数学成绩的数据是NaN值,所以count不会统计,而size依旧会统计。

好啦,今天的内容就到这~

--- End ---

你可能感兴趣的:(python,数据分析,numpy,机器学习,数据挖掘)