pandas 如何选择的子集DataFrame
作者:互联网
import pandas as pd titanic = pd.read_csv("data/titanic.csv") #pandas 中的Series属性包含(行,列) titanic.head() #head() 默认只显示5条 #结果: PassengerId Survived Pclass Name Sex ... Parch Ticket Fare Cabin Embarked 0 1 0 3 Braund, Mr. Owen Harris male ... 0 A/5 21171 7.2500 NaN S 1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female ... 0 PC 17599 71.2833 C85 C 2 3 1 3 Heikkinen, Miss. Laina female ... 0 STON/O2. 3101282 7.9250 NaN S 3 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female ... 0 113803 53.1000 C123 S 4 5 0 3 Allen, Mr. William Henry male ... 0
如何从中选择特定的列DataFrame
?
各式各样的例子:
1.我对泰坦尼克号乘客的年龄感兴趣 ages =titanic['Age'] ages.head() #结果 Out[5]: 0 22.0 1 38.0 2 26.0 3 35.0 4 35.0 Name: Age, dtype: float64 #要选择单个列,请在方括号中[]加上感兴趣的列的名称 #其中的每一列DataFrame都是一个Series。选择单个列后,返回的对象是#pandas DataFrame。我们可以通过检查输出的类型来验证这一点: In [6]: type(titanic["Age"]) Out[6]: pandas.core.series.Series 看看shape输出的: In [7]: titanic["Age"].shape Out[7]: (891,) ''' DataFrame.shape是熊猫的属性(请记住有关读写的教程,不要使用括号表示属性)Series并且DataFrame包含行和列的数目:(行,列)。熊猫系列是一维的,仅返回行数 '''
#我对泰坦尼克号乘客的年龄和性别感兴趣 In [8]: age_sex = titanic[["Age", "Sex"]] In [9]: age_sex.head() Out[9]: Age Sex 0 22.0 male 1 38.0 female 2 26.0 female 3 35.0 female 4 35.0 male #要选择多列,请使用选择括号内的列名称列表[] **************** #注意***** #内方括号定义了带有列名的 Python列表,而外方括号用于从熊猫中选择数据 In [10]: type(titanic[["Age", "Sex"]]) Out[10]: pandas.core.frame.DataFrame In [11]: titanic[["Age", "Sex"]].shape Out[11]: (891, 2) ''' 该选择返回了DataFrame891行和2列。请记住,a DataFrame是二维的,具有行和列的维。 '''
-
如何从中过滤特定行
DataFrame
?
-
我对35岁以上的乘客感兴趣 In [12]: above_35 = titanic[titanic["Age"] > 35] In [13]: above_35.head() #要基于条件表达式选择行,请在选择方括号内使用条件[] #选择括号内的条件检查 列的值大于35的行:titanic["Age"] > 35Age ''' 条件表达式的输出(>,而且==, !=,<,<=,...将工作)实际上是Pandas Series布尔值的(任一True或False具有相同的行数与原始的)DataFrame。
通过将其放在选择括号之间,Series可以使用此类布尔值来过滤。仅 将选择为其选择值的行。DataFrame[]True 其中的DataFrame是由891行组成的,通过检查结果的shape属性,看一下满足条件的行数 ''' In [15]: above_35.shape Out[15]: (217, 12) -
*****isin()条件函数True为提供的列表中的值的每一行返回a 我对2级和3级客舱的泰坦尼克号乘客感兴趣 class_23 = titanic[titanic["Pclass"].isin([2, 3])] class_23.head() ''' 与条件表达式类似,isin()条件函数True为提供的列表中的值的每一行返回a 。要基于此类函数过滤行,请使用选择括号内的条件函数[]。
在这种情况下,选择括号内的条件将检查列的第2 行或第3行。titanic["Pclass"].isin([2, 3])Pclass ''' class_23 = titanic[(titanic["Pclass"] == 2) | (titanic["Pclass"] == 3)] #这种和上面的效果是一样的 #注意!!! #组合多个条件语句是,每个条件必须用括号括起来()。而且不能使用and或or需要使用or的运算符|和and运算符& -
我想使用已知年龄的乘客数据 age_no_na = titanic[titanic["Age"].notna()] age_no_na.head() ''' notna()条件函数返回一个True为每一行中的值不是一个Null值。这样,可以将其与选择括号结合使用[]以过滤数据表 '''
-
如何从中选择特定的行和列
DataFrame
?
-
我对35岁以上的乘客的名字感兴趣 adult_names = titanic.loc[titanic["Age"] > 35, "Name"] adult_names.head() ''' 在这种一次性创建了行和列的子集,仅使用[]已经不行,需要使用 loc或者iloc,逗号前的部分是您想要的行,逗号后是想要选择的列 '''
-
我对第10至25行和第3至5行感兴趣 titanic.iloc[9:25, 2:5] 当使用loc或选择特定的行和/或列时iloc,可以将新值分配给所选数据。例如,要将名称分配给anonymous第三列的前三个元素: #查找第一个到第三个数据,并且将前三列的名称改为anonymous titanic.iloc[0:3, 3] = "anonymous"
-
#总结 1)选择数据子集时,使用方括号[]。 2)在这些括号内,您可以使用单个列/行标签,列/行标签列表,标签切片,条件表达式或冒号。 3)loc使用行和列名称时选择特定的行和/或列 4)iloc使用表格中的位置时选择特定的行和/或列 5)您可以基于loc/ 为选择分配新值iloc。
标签:head,Age,titanic,DataFrame,选择,子集,35,pandas 来源: https://www.cnblogs.com/u-damowang1/p/13586238.html