首页 > 其他分享 >Polars简明基础教程八:Series 和 DataFrame 以及它们之间的转换_B

Polars简明基础教程八:Series 和 DataFrame 以及它们之间的转换_B

时间:2024-08-15 10:27:26浏览次数:14  
标签:groups df Series DataFrame 基础教程 Polars pl

在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:

  1. 使用lists的list,其中每个list代表一列,
  2. 使用字符串列名的列表
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简明基础教程一:Polars快速入门

Polars简明基础教程二:懒惰模式 1:引入懒惰模式

Polars简明基础教程三:懒惰模式 1:引入懒惰模式(续)

Polars简明基础教程四:懒惰模式 2:评估查询

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

相关文章