下面是“基于DataFrame筛选数据与loc的用法详解”的完整攻略。
一、什么是DataFrame?
DataFrame是Python中pandas库中的一种类型,它是一个二维的表格型数据结构,每列可以是不同的数据类型(如整数、浮点数、字符串等),类似于Excel、SQL表、或者R中的数据框架。我们可以通过数据框架来处理、清洗、分析和可视化数据。
二、如何筛选数据
pandas中有多种方法用于筛选数据,用法和相应的函数也是多样的。下面详细介绍一些常用的方法及其用法:
1. 按条件筛选
在pandas中,可以使用布尔索引来筛选数据,比如筛选所有age大于25的数据:
import pandas as pd
data = {'name': ['Tom', 'Jim', 'Lily', 'Jack'], 'age': [25, 30, 18, 35], 'gender': ['M', 'M', 'F', 'M']}
df = pd.DataFrame(data)
df[df['age'] > 25] # 筛选所有age大于25的数据
2. 按列名/行号筛选
- 按列名筛选:
df['name'] # 筛选name列的数据
- 按行号筛选:
df.loc[0] # 筛选第一行的数据
3. 按复杂条件筛选
如果需要同时满足多个条件,可以使用pandas中的以下三种方法:
1)使用&、|代替and、or;
df[(df['age']>25) & (df['gender']=='M')]
2)使用query方法;
df.query('age > 25 and gender == "M"')
3)使用pandas中的eval方法;
df[ pd.eval('(df.age>25) & (df.gender=="M")') ]
三、什么是loc
一般情况下,我们都是通过行号、列名来访问数据,但是,在有些情况下,我们需要按标签或者标签范围来访问数据,这时就需要用到pandas中的.loc[]方法了。loc[]方法的用法很简单,它接受两个参数,第一参数是行标签,第二个参数是列标签。
df.loc[row_index, col_index]
注:col_index是可以省略不写的,表示需要返回所有列的数据。
- 使用标签单独访问一行数据:
df.loc[0]
- 使用标签访问指定行和列的数据:
df.loc[1, 'name']
- 使用标签访问多行多列的数据:
df.loc[[1,3], ['name', 'age']]
四、示例说明
下面给出两个示例,分别演示基于DataFrame筛选数据和loc的用法:
- 筛选法国女性的人数
import pandas as pd
data = {'name': ['Tom', 'Jim', 'Lily', 'Jack'], 'age': [25, 30, 18, 35], 'gender': ['M', 'M', 'F', 'M'], 'nation':['USA', 'UK', 'France', 'France']}
df = pd.DataFrame(data)
# 方法一
len(df[(df['gender']=='F') & (df['nation']=='France')])
# 方法二
df.query('gender == "F" and nation == "France"').shape[0]
# 方法三
df[ pd.eval('(df.gender=="F") & ( df.nation=="France" )') ].shape[0]
- 找到第一列相等的行
import pandas as pd
data = {'name': ['Tom', 'Jim', 'Lily', 'Tom'], 'age': [25, 30, 18, 35], 'gender': ['M', 'M', 'F', 'M'], 'nation':['USA', 'UK', 'France', 'France']}
df = pd.DataFrame(data)
df.loc[df['name'] == 'Tom']
至此,“基于DataFrame筛选数据与loc的用法详解”的完整攻略讲解结束。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于DataFrame筛选数据与loc的用法详解 - Python技术站