import pandas as pd
import random
# an example dataframe to test the helper function
example_df = pd.DataFrame({
"var_a": [random.choice(["foo","bar"]) for i in range(20)],
"var_b": [random.randint(0, 1) for i in range(20)],
"var_c": [random.random() for i in range(20)]
})
# helper function for viewing pandas dataframes
def glimpse_pd(df, max_width=76):
# find the max string lengths of the column names and dtypes for formatting
_max_len = max([len(col) for col in df])
_max_dtype_label_len = max([len(str(df[col].dtype)) for col in df])
# print the dimensions of the dataframe
print(f"{type(df)}: {df.shape[0]} rows of {df.shape[1]} columns")
# print the name, dtype and first few values of each column
for _column in df:
_col_vals = df[_column].head(max_width).to_list()
_col_type = str(df[_column].dtype)
output_col = f"{_column}:".ljust(_max_len+1, ' ')
output_dtype = f" {_col_type}".ljust(_max_dtype_label_len+3, ' ')
output_combined = f"{output_col} {output_dtype} {_col_vals}"
# trim the output if too long
if len(output_combined) > max_width:
output_combined = output_combined[0:(max_width-4)] + " ..."
print(output_combined)
8条答案
按热度按时间kx5bkwkv1#
在pandas中,
info()
方法创建的输出与R的str()
非常相似:wb1gzix02#
这提供了类似于R的
str()
的输出。它提供唯一值而不是初始值。gwbalxhn3#
summary()
~describe()
head()
~head()
我不确定
str()
的等价物。w1jd8yoj4#
Pandas提供了广泛的Comparison with R / R libraries。最明显的区别是R更喜欢函数式编程,而Pandas是面向对象的,数据框是关键对象。R和Python之间的另一个区别是Python从0开始数组,而R从1开始。
8ftvxx2r5#
对于与R中的
str()
函数等效的Python,我使用方法dtypes
。这将为每一列提供数据类型。cngwdvgl6#
我还是更喜欢
str()
,因为它列出了一些例子。info
的一个令人困惑的方面是,它的行为取决于一些环境设置,如pandas.options.display.max_info_columns
。我认为最好的替代方案是使用其他一些参数调用
info
,这些参数将强制执行固定的行为:对于您的其他功能:
tmb3ates7#
我不认为Pandas中有一个直接等价于
str()
函数(或dplyr
的glimpse()
)的函数可以提供相同的信息。我认为一个等效的函数必须显示以下内容:1.数据框中的行数和列数
1.所有列的名称
1.存储在每列中的数据类型
1.快速查看每列中的前几个值
基于@jjurach的回答,我写了一个辅助函数,作为R
str
或glimpse
函数的替身,以快速获得DataFrames的概述。下面是一个示例代码:运行该函数将返回以下输出:
6l7fqoea8#
我对R不太了解,但这里有一些线索:
困难的一个…对于函数,你可以使用dir(),数据集上的dir()会给予你所有的方法,所以也许这不是你想要的...
请参阅参数以自定义结果。
就像你已经做的那样。要获取名为ds
ds[:10]
的数据集的前10行,与tailds[:-10]
相同