python编程数据分析 pandas数据统计

目录

一:数据集准备

二:加载文件

三:分组操作进行统计


一:数据集准备

可以创建一个txt,并放置pycharm工程目录下

下面是博主的数据集测试,所用数据,需要的自取

1001,Chinese,1,80
1001,Chinese,2,81
1001,Chinese,3,79
1001,Chinese,4,86
1001,Math,1,69
1001,Math,2,70
1001,Math,3,79
1001,Math,4,90
1001,English,1,90
1001,English,2,89
1001,English,3,92
1001,English,4,96
1002,Chinese,1,85
1002,Chinese,2,86
1002,Chinese,3,88
1002,Chinese,4,71
1002,Math,1,63
1002,Math,2,96
1002,Math,3,68
1002,Math,4,72
1002,English,1,63
1002,English,2,93
1002,English,3,86
1002,English,4,75
1003,Chinese,1,87
1003,Chinese,2,81
1003,Chinese,3,82
1003,Chinese,4,77
1003,Math,1,69
1003,Math,2,91
1003,Math,3,61
1003,Math,4,79
1003,English,1,68
1003,English,2,82
1003,English,3,87
1003,English,4,96
1004,Chinese,1,81
1004,Chinese,2,77
1004,Chinese,3,92
1004,Chinese,4,68
1004,Math,1,96
1004,Math,2,85
1004,Math,3,85
1004,Math,4,74
1004,English,1,67
1004,English,2,63
1004,English,3,96
1004,English,4,77

二:加载文件

加载文件 read_csv 

import numpy as np
import pandas as pd

# 列名
columns = ['sno', 'subject', 'unit', 'score']
# 1 加载文件
df = pd.read_csv("student.txt", sep=',', names=columns)
print(df.head())
print(df.shape)
    sno  subject  unit  score
0  1001  Chinese     1     80
1  1001  Chinese     2     81
2  1001  Chinese     3     79
3  1001  Chinese     4     86
4  1001     Math     1     69
(48, 4)

如上结果

加载读取数据集head 头部数据,

shape 规格形状  为4列,分别为学号、科目、次数、分数 

三:分组操作进行统计

1 按照科目分组

# 根据科目进行分组
df_subject = df.groupby('subject')
for i in df_subject:
    print(i)

import numpy as np
import pandas as pd

# 列名
columns = ['sno', 'subject', 'unit', 'score']
# 1 加载文件
df = pd.read_csv("student.txt", sep=',', names=columns, index_col=0)
# 分组操作进行统计
# 根据科目进行分组、只获取分数
df_subject = df.groupby('subject')
for i in df_subject:
    print(i)
('Chinese',       subject  unit  score
sno                       
1001  Chinese     1     80
1001  Chinese     2     81
1001  Chinese     3     79
1001  Chinese     4     86
1002  Chinese     1     85
1002  Chinese     2     86
1002  Chinese     3     88
1002  Chinese     4     71
1003  Chinese     1     87
1003  Chinese     2     81
1003  Chinese     3     82
1003  Chinese     4     77
1004  Chinese     1     81
1004  Chinese     2     77
1004  Chinese     3     92
1004  Chinese     4     68)
('English',       subject  unit  score
sno                       
1001  English     1     90
1001  English     2     89
1001  English     3     92
1001  English     4     96
1002  English     1     63
1002  English     2     93
1002  English     3     86
1002  English     4     75
1003  English     1     68
1003  English     2     82
1003  English     3     87
1003  English     4     96
1004  English     1     67
1004  English     2     63
1004  English     3     96
1004  English     4     77)
('Math',      subject  unit  score
sno                      
1001    Math     1     69
1001    Math     2     70
1001    Math     3     79
1001    Math     4     90
1002    Math     1     63
1002    Math     2     96
1002    Math     3     68
1002    Math     4     72
1003    Math     1     69
1003    Math     2     91
1003    Math     3     61
1003    Math     4     79
1004    Math     1     96
1004    Math     2     85
1004    Math     3     85
1004    Math     4     74)

2 各个科目只取分数 

# 根据科目进行分组只获取分数
df_subject = df.groupby('subject')['score']
for i in df_subject:
    print(i)

import numpy as np
import pandas as pd

# 列名
columns = ['sno', 'subject', 'unit', 'score']
# 1 加载文件
df = pd.read_csv("student.txt", sep=',', names=columns, index_col=0)
# 分组操作进行统计
# 根据科目进行分组、只获取分数
df_subject = df.groupby('subject')['score']
for i in df_subject:
    print(i)
('Chinese', sno
1001    80
1001    81
1001    79
1001    86
1002    85
1002    86
1002    88
1002    71
1003    87
1003    81
1003    82
1003    77
1004    81
1004    77
1004    92
1004    68
Name: score, dtype: int64)
('English', sno
1001    90
1001    89
1001    92
1001    96
1002    63
1002    93
1002    86
1002    75
1003    68
1003    82
1003    87
1003    96
1004    67
1004    63
1004    96
1004    77
Name: score, dtype: int64)
('Math', sno
1001    69
1001    70
1001    79
1001    90
1002    63
1002    96
1002    68
1002    72
1003    69
1003    91
1003    61
1003    79
1004    96
1004    85
1004    85
1004    74
Name: score, dtype: int64)

3 各个科目的平均成绩

df_subject_mean = df.groupby('subject')['score'].mean()
print(df_subject_mean)

import numpy as np
import pandas as pd

# 列名
columns = ['sno', 'subject', 'unit', 'score']
# 1 加载文件
df = pd.read_csv("student.txt", sep=',', names=columns, index_col=0)
# 分组操作进行统计
# 根据科目进行分组、只获取分数
# df_subject = df.groupby('subject')['score']
# for i in df_subject:
#     print(i)

df_subject_mean = df.groupby('subject')['score'].mean()
print(df_subject_mean)
subject
Chinese    81.3125
English    82.5000
Math       77.9375
Name: score, dtype: float64

4 各个同学,各个科目的平均成绩
# 分组因素 学号 科目
df_mean = df.groupby(['sno', 'subject'])['score'].mean()
print(df_mean)

import numpy as np
import pandas as pd

# 列名
columns = ['sno', 'subject', 'unit', 'score']
# 1 加载文件
df = pd.read_csv("student.txt", sep=',', names=columns, index_col=0)
# 分组操作进行统计
# 每个同学 每个科目的平均成绩
# 分组因素 学号 科目
df_mean = df.groupby(['sno', 'subject'])['score'].mean()
print(df_mean)

sno   subject
1001  Chinese    81.50
      English    91.75
      Math       77.00
1002  Chinese    82.50
      English    79.25
      Math       74.75
1003  Chinese    81.75
      English    83.25
      Math       75.00
1004  Chinese    79.50
      English    75.75
      Math       85.00
Name: score, dtype: float64
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chenruhan_QAQ_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值