火龙信奥
  • 首页
  • 课程
  • 题库
  • 打卡
    • 代码对战
    • 快速对战
  • 题单
  • 团队
  • 荣誉墙
  • 商城
  • 登录 / 注册

9.24【pandas数据处理】

作者: 作者的头像   huolong , 时间:2023-09-24 10:48:24 , 所有人可见, 阅读  15

import pandas as pd 

df = pd.read_excel('考生信息.xlsx', engine = 'openpyxl')

#df.index是一个行索引,对象
#df.columns是一个列索引,对象
#df.values 是一个嵌套列表 
print(df.index, df.columns ,df.values)

#如何去查看某个值的两种方式

print(df.语文[0] , df.at[0, '语文'])


#选行
#head(),默认前面5行,有个参数n=3,比如head(3)

print(df.head(3))

#tail(),默认后面5行,有个参数n=3,比如tail(3)
print(df.tail())


print('-=============')

#采用切片的方式来进行选行
print(df[3:5])


#如何采用过滤的方式去选择:语文及格的这些行
#还可以采用一些表达式

# 
_filter = df['语文'] > 60 
_filter = df.语文 > 60  
_filter = df.语文 == 87
print(df[_filter]) 


df = df.drop(10) #删除指定行,默认以行的形式
df = df.drop('科学', axis = 1) #删除指定列,同时指定axis=1

t1 = {"学号":'101012',"姓名":'王丹凤',"语文":90,"英文":90,"数学":90,"科学":90,"总分":80}


t = pd.Series(['101012','王丹凤',90,90,90,90,80], index=["学号","姓名","语文","英文","数学","科学","总分"])
#df = df.append(t, ignore_index=True)

#数据统计与计算 
#统计语文这一列的行数,返回非空(NaN)的数据 
print(df, df.总分.count(), df[2:4].count())

#求最大值
print(df.语文.max() ,df.语文.min() , round( df.语文.sum() / df.语文.count(),2), df.语文.describe() ) 

print("==========分组groupby===========")

#以性别为分类对象,对语文的总分进行一个输出 ,他的结果是一个Series
print(df.groupby('性别')['语文'].sum()['女'] ,type(df.groupby('性别')['语文']) , type(df.groupby('性别')['语文'].sum() ))


#结果是一个 DataFrame的groupby对象   <pandas.core.groupby.generic.DataFrameGroupBy object at 0x000000001737D518>
print(df.groupby('性别'))

'''
('女',       学号   姓名 性别  语文  英文  数学  总分
1  10102   李四  女  87  87  85 NaN
3  10104   赵六  女  88  40  62 NaN
5  10106  张三1  女  88  92  85 NaN
7  10108  王五3  女  87  60  59 NaN
9  10110  李七5  女  50  20  33 NaN)
('男',       学号   姓名 性别  语文  英文  数学  总分
0  10101   张三  男  88  82  85 NaN
2  10103   王五  男  87  60  59 NaN
4  10105   李七  男  50  20  10 NaN
6  10107  李四2  男  83  47  55 NaN
8  10109  赵六4  男  88  40  42 NaN)
'''

for i in df.groupby('性别'):
    print(i)

#结果是一个 Series的groupby对象 <pandas.core.groupby.generic.SeriesGroupBy object at 0x000000001736A0B8>
print(df.groupby('性别')['性别'])

'''
('女', 1    女
3    女
5    女
7    女
9    女
Name: 性别, dtype: object)
('男', 0    男
2    男
4    男
6    男
8    男
Name: 性别, dtype: object)
'''
for i in df.groupby('性别')['性别']:
    print(i)


print("=================排序sort_values==================")
#按照总分排序,默认从小到大 ,ascending=False 从大到小,是否影响原来的数据 inplace = False
df = df.sort_values('语文', ascending = False)

#按照多关键字排序 
df = df.sort_values(['语文','英文'], ascending = False)
print(df)



—— 本文来自火龙信奥(义乌睿码科技):义乌青少年信息学奥赛与编程教育平台,专注 CSP-J/S、NOIP、GESP 竞赛培训,线上线下融合教学,助力编程升学。网址:hlcoding.com

©2026加盟我们 | 关于我们 | ACM课程 | 常见问题 | 成果墙 | 评测记录 | 浙ICP备2021013995号
在线画图 | OI WIki | 打字练习
火龙信奥
请输入登录信息


请完成安全验证
验证码底图 滑块
向右拖动滑块完成验证
请输入用户名 / 绑定的手机号码



请输入注册信息(手机号验证码注册)





验证码5分钟有效,60秒内不可重复获取,每日最多3次

微信登录

微信登录二维码

正在生成二维码...

账号已过期,请续期。
去续期

绑定手机号

📱

为了更好地保护您的账号安全,享受完整的平台服务

请您尽快绑定手机号码