pandas使用教程:导入数据和查找行和列,条件选择-灵析社区

清晨我上码

导入数据

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