导入数据
import pandas as pd
df = pd.read_excel('team.xlsx')
df
这是一个学生各季度成绩总表(节选),各列说明如下。
name:学生的姓名,这列没有重复值,一个学生一行,即一条数据,共100条。
team:所在的团队、班级,这个数据会重复。
Q1~Q4:各个季度的成绩,可能会有重复值。
查看数据类型
print(type(df)) #查看df类型
<class 'pandas.core.frame.DataFrame'>
查看数据
df.head() #查看前5条
df.tail() #查看后5条
df.sample(5) #查看随机5条
查看数据信息
df.shape # (100, 6) 查看行数和列数
(100, 6)
df.describe() # 查看数值型列的汇总统计
df.dtypes # 查看各字段类型
df.axes # 显示数据行和列名
df.columns # 列名
df.info() # 查看索引、数据类型和内存信息
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 100 entries, 0 to 99
Data columns (total 6 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 name 100 non-null object
1 team 100 non-null object
2 Q1 100 non-null int64
3 Q2 100 non-null int64
4 Q3 100 non-null int64
5 Q4 100 non-null int64
dtypes: int64(4), object(2)
memory usage: 4.8+ KB
df.describe() # 查看数值型列的汇总统计
df.dtypes # 查看各字段类型
name object
team object
Q1 int64
Q2 int64
Q3 int64
Q4 int64
dtype: object
df.columns # 列名
Index(['name', 'team', 'Q1', 'Q2', 'Q3', 'Q4'], dtype='object')
建立索引
实际上第一列name应当是实际的行索引,下面用代码实现:
df.set_index('name', inplace=True) # 建立索引并生效
df
team Q1 Q2 Q3 Q4
name
Liver E 89 21 24 64
Arry C 36 37 37 57
Ack A 57 60 18 84
Eorge C 93 96 71 78
Oah D 65 49 61 86
建立实际行索引之后,数字索引就没有了。
数据查找
选择列
df['team']
name
Liver E
Arry C
Ack A
Eorge C
Oah D
..
Gabriel C
Austin7 C
Lincoln4 C
Eli E
Ben E
选择行
按数字索引选择
df[0:3] # 取前三行
df[0:10:2] # 在前10个中每两个取一个
df.iloc[:10,:] # 前10个
按新索引选择
df[df.index == 'Liver'] # 指定姓名
team Q1 Q2 Q3 Q4
name
Liver E 89 21 24 64
同时指定行和列
df.loc['Arry','Q1':'Q3'] # 只看Arry的三个季度成绩
df.loc['Liver':'Eorge', 'Q1':'Q4'] #从Liver到Eorge的四个季度成绩
Q1 36
Q2 37
Q3 37
Name: Arry, dtype: object
Q1 Q2 Q3 Q4
name
Liver 89 21 24 64
Arry 36 37 37 57
Ack 57 60 18 84
Eorge 93 96 71 78
条件选择
单一条件
df[df.Q1 > 94] # Q1列大于94的
team Q1 Q2 Q3 Q4
name
Max E 97 75 41 3
Elijah B 97 89 15 46
Aaron A 96 75 55 8
Lincoln4 C 98 93 1 20
df[df.team == 'C'] # team列为'C'的
team Q1 Q2 Q3 Q4
name
Arry C 36 37 37 57
Eorge C 93 96 71 78
Harlie C 24 13 87 43
Archie C 83 89 59 68
复合查询
df[(df['Q1'] > 90) & (df['team'] == 'C')] # and关系
df[df['team'] == 'C'].loc[df.Q1>90] # 多重筛选
team Q1 Q2 Q3 Q4
name
Eorge C 93 96 71 78
Alexander C 91 76 26 79
Lincoln4 C 98 93 1 20
阅读量:2020
点赞量:0
收藏量:0