如何使用正则表达式和数据类型选择多个DataFrame列
可以将DataFrame与电子表格或具有行和列的数据库中保存的数据集进行比较。DataFrame是2D对象。
好吧,与一维和二维术语混淆了吗?
1D(系列)和2D(DataFrame)之间的主要区别在于,您需要先设置信息点的数量才能到达任何单个数据点。如果以一个Series为例,并且想要提取一个值,则只需要一个参考点,即行索引。
与表(DataFrame)相比,一个参考点不足以到达数据点,您需要行值和列值的交集。
下面的代码片段显示了如何从csv文件创建PandasDataFrame。
默认情况下.read_csv()方法创建一个DataFrame。您可以通过搜索电影从kaggle.com下载电影数据集。
"""Script : Create a Pandas DataFrame from a csv file.""" import pandas as pd movies_dataset pd read_csv "https://raw.githubusercontent.com/sasankac/TestDataSet/master/movies_data.csv") # 1 print the type of object type(movies_dataset) # 2 print the top 5 records in a tabular format movies_dataset head(5)
2.选择一个DataFrame列。将列名作为字符串或列表传递给索引运算符将以Series或DataFrame的形式返回列值。
如果我们传递带有列名的字符串,您将获得一个Series作为输出,但是,仅传递一个列名的列表将返回DataFrame。我们将通过示例看到这一点。
# select the data as series movies_dataset["title"]
0 Avatar 1 Pirates of the Caribbean: At World's End 2 Spectre 3 The Dark Knight Rises 4 John Carter ... 4798 El Mariachi 4799 Newlyweds 4800 Signed, Sealed, Delivered 4801 Shanghai Calling 4802 My Date with Drew Name: title, Length: 4803, dtype: object
# select the data as DataFrame movies_dataset[["title"]]
3.选择多个DataFrame列。
# Multiple DataFrame columns movies_dataset[["title""runtime","vote_average","vote_count"]]
为避免代码易读性问题,我始终建议定义一个变量以将列名作为列表保存,并使用列名而不是在代码中指定多个列名。
columns=["title","runtime","vote_average","vote_count"]movies_dataset[columns]
4.DataFrame列按列名。
.filter()方法
此方法非常方便使用字符串搜索和选择列。它的工作方式与SQL中的like%%参数几乎相同。请记住,.filter()方法仅通过检查列名而不是实际数据值来选择列。
.filter()方法支持三个可用于选择操作的参数。
.like
.regex
.items
like parameter takes a string and attempts to find the column names that contain this string somewhere in the column name.
# Select the column that have a column name like "title" movies_dataset.filter(like="title").head(5)
.regex–使用regualr表达式选择列名称的更灵活方法
# Select the columns that end with "t" movies_dataset.filter(regex=t).head()
.items–将列名作为字符串或列表传递给索引运算符,但不会引发KeyError的重复
按数据类型的DataFrame列。
如果您只想过滤和使用某些数据类型,则.select_dtypes方法适用于列数据类型。
同样,.select_dtypes方法在其包含或排除参数中接受多种数据类型(按列表)或单一数据类型(作为字符串),并返回仅包含那些给定数据类型的列的DataFrame。
.include参数包括具有指定数据类型的列,.exclude将忽略具有指定数据类型的列。
首先让我们看一下数据类型和具有这些数据类型的列数
movies_dataset=pd.read_csv("https://raw.githubusercontent.com/sasankac/TestDataSet/master/movies_data.csv" movies_dataset.dtypes.value_counts()
object 5 int64 4 float64 3 dtype: int64
a)从pandasDataFrames中过滤整数数据类型。
movies_dataset select_dtypes(include="int")head(3)
b)。从pandasDataFrames中选择整数和浮点数据类型。
您可以指定多种数据类型,如下所示。
movies_dataset select_dtypes(include=["int64","float"]).head(3)
c)好吧,如果您只想要所有数字数据类型,只需指定数字
movies_dataset select_dtypes(include=["number"]).head(3)
d)。从pandasDataFrames中排除某些数据类型。
movies_dataset select_dtypes(exclude=["object"]).head(3)
注意:-没有要处理的字符串数据类型,大熊猫将它们转换为对象,因此如果遇到异常“TypeError:数据类型“字符串”不被理解”,请用对象代替字符串。