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