在Series和DataFrame列之间进行转换
我们先使用方括号从 DataFrame 的列中创建一个Series
(
df["age"]
.head(3)
)
请注意,Series有一个名称(age)和一个数据类型(64位浮点数)。
我们还可以使用to_series从单列的DataFrame中创建一个Series(我们将在本课程的下一节中进一步学习select方法)
(
df
.select("age")
.to_series()
.head(3)
)
我们可以使用to_frame将Series转换为单列的DataFrame
s = df["name"]
(
s
.to_frame()
.head(3)
)
从list或dict创建Series或DataFrame
我们可以从Python的list中创建一个Series
values = [1,2,3]
pl.Series(values)
如果没有设置name参数,那么它默认为空字符串。名称可以作为第一个参数传递
pl.Series('vals',values)
我们还可以使用to_list将Series转换为list
pl.Series(name='vals',values=values).to_list()
在“选择列和转换DataFrame”部分中,我们将看到如何从列表中向DataFrame添加列。
我们可以使用以下方法创建DataFrame:
- 使用lists的list,其中每个list代表一列,
- 使用字符串列名的列表
data = [
[1,2,3],
[4,5,6]
]
(
pl.DataFrame(
data,
schema=["col0","col1"]
)
)
我们还可以从dict中创建一个DataFrame
data_dict = {"col0":[1,2,3],"col1":[4,5,6]}
(
pl.DataFrame(
data_dict,
)
)
我们可以通过将dict传递给schema参数来指定数据类型。在这个例子中,我们为col1列指定了一个32位整数类型
data_dict = {"col0":[1,2,3],"col1":[4,5,6]}
(
pl.DataFrame(
data_dict,
schema={
"col0":pl.Int64,
"col1":pl.Int32
}
)
)
最后,我们可以使用to_dicts方法将DataFrame作为dicts的list获取
df = (
pl.DataFrame(
data_dict,
)
)
df.to_dicts()
to_dicts的输出对于测试非常有用。在GitHub上Polars仓库的自动化测试(以及本课程材料的自动化测试)中,查询的输出通常使用to_dicts进行测试,如下所示:
assert df.to_dicts() == [{'col0': 1, 'col1': 4}, {'col0': 2, 'col1': 5}, {'col0': 3, 'col1': 6}]
在以后的文章中,我们将单独出一节的篇幅对 to_dicts 进行阐述。
在练习中,我们将看到如何从dict中创建一个DataFrame。
练习
在练习中,您将加深对以下内容的理解:
- 从DataFrame中提取Series
- 从Series中获取元数据
- 从list创建Series
- 从lists创建DataFrames
练习 1
从DataFrame中提取Age列作为Series,然后找到:
Series的dtype
Series的中位数
df = pl.read_csv(csv_file)
s = <blank>
df = pl.read_csv(csv_file)
s = <blank>
练习 2
你有以下包含数据的Python lists。
groups = ["a","a","b","b","c"]
values = [0,1,2,3,4]
从groups列表中创建一个名为groupsSeries的Series。Series中的名称应为groups。
通过将这些内容作为Python dict传递给pl.DataFrame,来创建一个DataFrame
解决方案
练习 1 的解决方案
从DataFrame中提取Age列作为Series,并找到:
Series的dtype(数据类型)
Series的中位数
df = pl.read_csv(csv_file)
s = df["Age"]
s.dtype
df = pl.read_csv(csv_file)
s = df["Age"]
s.median()
练习 2 的解决方案
你有以下包含数据的 Python lists。
groups = ["a","a","b","b","c"]
values = [0,1,2,3,4]
从groups列表创建一个名为groups_series的Series。Series内部的名称应为groups。
groups_series = pl.Series("groups",groups)
通过将这些作为Python dict传递给pl.DataFrame来创建一个DataFrame。
pl.DataFrame(
{
"groups":groups,
"vals":values
}
)
Polars简明基础教程系列
Polars简明基础教程三:懒惰模式 1:引入懒惰模式(续)
Polars简明基础教程五:什么是Polars的“DataFrame(数据框)_上”
Polars简明基础教程六:什么是Polars的“DataFrame(数据框)_下”
Polars简明基础教程七:Series 和 DataFrame 以及它们之间的转换_A
Polars简明基础教程八:Series 和 DataFrame 以及它们之间的转换_B
标签:groups,df,Series,DataFrame,基础教程,Polars,pl From: https://blog.csdn.net/sosogod/article/details/141122909