如何使用正则表达式和数据类型选择多个DataFrame列
DataFrame可以与电子表格或具有行和列的数据库中持有的数据集进行比较。DataFrame是一个2D对象。
好吧,1D和2D术语让您困惑了吗?
1D(Series)和2D(DataFrame)之间的主要区别是,您需要忽略的信息点数以到达任何单个数据点。如果您举一个Series的例子,并且想要提取一个值,您只需要一个参考点,即行索引。
与表格(DataFrame)相比,一个参考点不足以到达数据点,您需要行值和列值的交集。
下面的片段显示如何从csv文件创建Pandas DataFrame。
.read_csv()方法默认创建DataFrame。您可以通过在kaggle.com上搜索电影来下载电影数据集。
"""脚本:从csv文件创建Pandas DataFrame。"""
import pandas as pd
movies_dataset = pd.read_csv("https://raw.githubusercontent.com/sasankac/TestDataSet/master/movies_data.csv")
# 1 打印对象类型
type(movies_dataset)
#2 以表格格式打印前5条记录
movies_dataset.head(5)
2. 选择单独的DataFrame列。 将列名称作为字符串或列表传递给索引运算符将返回列值作为Series或DataFrame。
如果我们传递一个带有列名的字符串,您将会得到Series作为输出,然而,使用只有一个列名的列表将返回DataFrame。我们将通过示例来看看这一点。
# 选择数据作为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
# 选择数据作为DataFrame
movies_dataset[["title"]]
3. 选择多个 DataFrame 列。
# 选择多个 DataFrame 列 movies_dataset[["title""runtime","vote_average","vote_count"]]
为避免代码可读性问题,我建议总是定义一个变量来保存列名的列表,并使用列名,而不是在代码中指定多个列名。
columns=["title","runtime","vote_average","vote_count"]movies_dataset[columns]
4.DataFrame的列名按列名选择。
阅读更多:Python 教程
.filter() 方法
这种方法非常方便,可以使用字符串搜索和选择列。这与在SQL中的like %%参数几乎相同。请记住,.filter()方法仅通过检查列名而不是实际数据值来选择列。
.filter()方法支持三个用于选择操作的参数。
.like
.regex
.items
like参数接受一个字符串,并尝试在列名中找到包含此字符串的列名。
# 选择列名类似于“title”的列
movies_dataset.filter(like="title").head(5)
.regex – 更灵活的使用正则表达式来选择列名
# 选择以“t”结尾的列
movies_dataset.filter(regex=t).head()
.items – 将列名作为字符串或列表重复,不会引发KeyError。
按数据类型来选择DataFrame列。
如果您只对某些数据类型感兴趣,那么 .select_dtypes 方法可以对列数据类型进行处理和过滤。
再次说明,.select_dtypes 方法接受多个数据类型(通过list) 或单个数据类型(作为一个String) 作为其 include 或 exclude 参数,并返回一个只包含指定数据类型列的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) 从pandas DataFrames中过滤整数数据类型。
movies_dataset select_dtypes(include="int")head(3)
b) 从pandas DataFrames中选择整数和浮点数数据类型。
您可以像下面这样指定多个数据类型。
movies_dataset select_dtypes(include=["int64","float"]).head(3)
c) 如果您只想查看所有数字数据类型,只需指定数字即可
movies_dataset select_dtypes(include=["number"]).head(3)
d). 从pandas DataFrames中排除某些数据类型。
movies_dataset select_dtypes(exclude=["object"]).head(3)
注意 :pandas中没有字符串数据类型,它们被转换为“Object”,因此,如果您遇到异常“TypeError:data type”string“ not understood”,请将string替换为Object。
极客教程