【问题标题】:How to combine Python dataframe's info output with unique count list如何将 Python 数据框的信息输出与唯一计数列表相结合
【发布时间】:2020-01-05 02:19:18
【问题描述】:

我像这样将 CSV 读入数据帧并运行 info():

dlqcsv = pd.read_csv(a1, sep=',', encoding ="ISO-8859-1", low_memory=False, index_col=False)
dd = dlqcsv.info(verbose=True)
dd.describe()

它产生:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 504334 entries, 0 to 504333
Data columns (total 288 columns):
Unnamed: 0                 int64
rowno__loan               float64
..... the rest of the 288 features

然后我运行以下内容来计算唯一性(从该网站窃取某人的代码)

col_uni_val={}
for i in dlqcsv.columns:
    col_uni_val[i] = len(dlqcsv[i].unique())
import pprint
col_uni_val

得到了这个,太棒了

{'Unnamed: 0': 504334,
 'rowno_loan': 55851,
.. the rest of the 288 pairs..

我想将详细的info 输出与unique count 输出结合起来。显然,这是一个简单的一对一唯一内连接,匹配键中没有重复。

如何调出两个表中的特征名称列?似乎都没有列名?

另外,可以直接将计数写入数据帧而不是字典吗? 谢谢你。

【问题讨论】:

    标签: python pandas dataframe dictionary unique


    【解决方案1】:

    Pandas 有一个用于计算唯一值的内置方法。您可以使用dlqcsv.nunique() 获取输出

    对于您要求的整体任务,操作df.info 是一项更难的任务。一个更简单的选择是使用类似下面的代码来计算列的所有必需值。

    
    output = []
    
    for col in df.columns:
    
        nonNull  = len(df) - np.sum(pd.isna(df[col]))
        unique = df[col].nunique()
        colType = str(df[col].dtype)
    
        output.append([col, nonNull, unique, colType])
    
    output = pd.DataFrame(output)   
    output.columns = ['colName','non-null values', 'unique', 'dtype']
    
    
    

    输出如下:

         colName  non-null values  unique    dtype
    0      le_id               20       5    int64
    1    run_seq               20       5    int64
    2      cp_id               20       8    int64
    3    cp_name               20       8   object
    4   products               20       7   object
    5  tran_amnt               20      17    int64
    6   currency               20       6   object
    7    current                1       1  float6
    

    【讨论】:

    • 谢谢你,肉山。有效。同意 df.info() 主要用于查看而不是用于操作。想知道(不反对任何人)我们是否可以将 df.info() 变形为更有用。如果不打开verbose,看它的意义不大。开启详细也不会增加价值,因为它对操作不友好。旁注:当帧适合 Linux 上的内存时,nunique 确实运行得更快,超过了 SAS 数据步。在我的测试中,当列数 > 40000 时,内存不合适?它仍然优于 SAS DS,但在独特性方面落后于 SAS DS2。它似乎没有有效地交换磁盘空间。
    猜你喜欢
    • 1970-01-01
    • 2021-04-10
    • 1970-01-01
    • 2021-03-12
    • 2014-10-03
    • 2021-03-09
    • 2020-11-27
    • 2020-02-27
    • 2011-12-02
    相关资源
    最近更新 更多