Python中Pandas数据框架的等效于R / dplyr的glimpse()函数是什么?

3

我发现在R/dplyr中,glimpse函数非常有用。但是作为一个习惯于使用R并正在使用Python的人,我还没有找到像glimpse()这样对Panda数据框架非常有用的东西。

在Python中,我尝试了一些类似于.describe()、.info()和.head()的东西,但是这些都没有给我像R的glimpse()那样有用的快照。

glimpse()中我非常习惯的好特性包括:

  • 所有变量/列名作为输出的行
  • 所有变量/列的数据类型
  • 每个列的前几个观测值
  • 观测值的总数
  • 变量/列的总数

下面是一些你可以使用的简单代码:

R

library(dplyr)

test <- data.frame(column_one = c("A", "B", "C", "D"),
           column_two = c(1:4))

glimpse(test)

# The output is as follows

Rows: 4
Columns: 2
$ column_one <chr> "A", "B", "C", "D"
$ column_two <int> 1, 2, 3, 4

Python

import pandas as pd

test = pd.DataFrame({'column_one':['A', 'B', 'C', 'D'],
                     'column_two':[1, 2, 3, 4]})

是否有一个Python函数可以近似地反映这些功能(不是多个,也不是部分)?如果没有,你会如何创建一个精确完成任务的函数?


1
有什么Python pandas的等价函数可以替代R语言中的str()、summary()和head()吗? - markus
2个回答

3
以下是一种实现方法:
def glimpse(df):
    print(f"Rows: {df.shape[0]}")
    print(f"Columns: {df.shape[1]}")
    for col in df.columns:
        print(f"$ {col} <{df[col].dtype}> {df[col].head().values}")

然后:

import pandas as pd

df = pd.DataFrame(
    {"column_one": ["A", "B", "C", "D"], "column_two": [1, 2, 3, 4]}
)

glimpse(df)

# Output
Rows: 4
Columns: 2
$ column_one <object> ['A' 'B' 'C' 'D']
$ column_two <int64> [1 2 3 4]

0
我更喜欢这个,因为它利用了Pandas的原生方法,在Jupyter和终端上都看起来很好。
def glimpse(df: pd.DataFrame) -> pd.DataFrame:
    """
    Similar to R's glimpse()

    Parameters
    ----------
    df : pd.DataFrame

    Returns
    -------
    pd.DataFrame
    """
    print(f"Rows: {df.shape[0]}")
    print(f"Columns: {df.shape[1]}")

    sample_size = min(df.shape[0], 5)

    return (
        df.sample(sample_size)
        .T.assign(dtypes=df.dtypes)
        .loc[
            :, lambda x: sorted(x.columns, key=lambda col: 0 if col == "dtypes" else 1)
        ]
    )
df = pd.DataFrame({"column_one": ["A", "B", "C", "D"], "column_two": [1, 2, 3, 4]})

df.pipe(glimpse)

Rows: 4
Columns: 2

            dtypes  2  0  1  3
column_one  object  C  A  B  D
column_two   int64  3  1  2  4

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接