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是二维的,具有行和列的维。
'''
-
我对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值。这样,可以将其与选择括号结合使用[]以过滤数据表
'''
-
我对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。