繁体   English   中英

熊猫value_counts输出文件

pandas value_counts to output file

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

目的

我试图为dataframe中的每一列自动生成一个EDA报告,从value_counts()开始。

问题

问题是我的函数什么都不返回。 因此,尽管它确实可以打印到控制台,但不会将相同的输出打印到我的文本文件中。 我使用它只是生成语法,然后在我的IDE中逐行运行它来查看所有变量,但这不是一个非常编程的解决方案。

笔记

一旦工作成功,我将为图和df.describe()的输出添加一些语法,但是现在我什至无法获得所需的基础知识。

输出不一定必须是.txt,但是我认为这在使它正常工作时将是最简单的。

我试过了

import pandas as pd

def EDA(df, name):

    df.name = name  # name == string version of df
    print('#', df.name)
    for val in df.columns:
        print('# ', val, '\n', df[val].value_counts(dropna=False), '\n', sep='')
        print(df[val].value_counts(dropna=False))

path = 'Data/nameofmyfile.csv'

# name of df
activeWD = pd.read_csv(path, skiprows=6)

f = open('Output/outtext.txt', 'a+', encoding='utf-8')
f.write(EDA(activeWD, 'activeWD'))
f.close()

也尝试过

  1. 各种版本的用return替换print

    def EDA(df,name):

      df.name = name # name == string version of df print('#', df.name) for val in df.columns: print('# ', val, '\\n', df[val].value_counts(dropna=False), '\\n', sep='') return(df[val].value_counts(dropna=False)) 
  2. 从anaconda提示符下运行文件

    Python语法\\ newdataEDA.5.py >> Output.outtext.txt

导致以下编解码器错误:

(base) C:\Users\auracoll\Analytic Projects\IDL Attrition>Python Syntax\newdatanewlife11.5.py >> Output.outtext.txt
sys:1: DtypeWarning: Columns (3,16,39,40,41,42,49) have mixed types. Specify dtype option on import or set low_memory=False.
Traceback (most recent call last):
  File "Syntax\newdatanewlife11.5.py", line 46, in <module>
    EDA(activeWD, name='activeWD')
  File "Syntax\newdatanewlife11.5.py", line 38, in EDA
    print(df[col].value_counts(dropna=False))
  File "C:\ProgramData\Anaconda3\lib\encodings\cp1252.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 382-385: character maps to <undefined>

我尝试过encoding='utf-8'encoding='ISO-8859-1' ,但这两个都无法解决此问题。

  1. 我尝试保存中间变量,该中间变量不返回任何类型。

    testvar = for val in df.columns: df[val].value_counts(dropna=False)

当我这样做时,testvar是内建模块的NoneType对象

1 个回复

命令行解决方案,尽管您当然可以按照注释者的建议使用纯python打印到文件。 我之所以这样发布是因为您提到您已经尝试使用命令提示符并且无法将输出打印到文件中。 因此,如下所示编辑脚本filename.py ...

import pandas as pd

df = pd.DataFrame({'Pet':['Cat','Dog','Dog','Dog','Fish'],
                   'Color':['Blue','Blue','Red','Orange','Orange'],
                   'Name':['Henry','Bob','Mary','Doggo','Henry']})

def EDA(df, name):
    df.name = name
    print('#{}\n'.format(df.name))
    for col in df.columns:
        print('#{}\n'.format(col))
        print(df[col].value_counts(dropna=False))
        print('\n')

if __name__=='__main__':
    EDA(df, name='test')

然后您应该可以运行:在终端中运行python filename.py > output.txt

编辑

为了后代的缘故,OP的问题不在于它们如何打印到文件,而是存在一个问题,即其csv包含pandas.read_csv解码时遇到的不常见字符。 解决方案包括在运行代码之前将python的I / O编码设置为UTF-8,如下所示: python 3.2 UnicodeEncodeError:'charmap'编解码器无法对位置9629处的字符'\\ u2013'进行编码:字符映射为<undefined>

chcp 65001
set PYTHONIOENCODING=utf-8
1 熊猫 value_counts() 并保留它

我想用 .value_counts() 计算值并保留它。 例如 我想对齐这些值,例如, 我怎样才能做到这一点?? lz,给点意见谢谢! ...

2020-06-12 03:38:32 3 52   pandas
3 熊猫 value_counts() + 重量

我有一个像这样的 Pandas 数据框: 我想应用一个函数来计算唯一标签的频率,权重由“权重”列给出: 该函数必须同时适用于“var_bool”和“var_cat”,可能需要一个快速引擎(数据帧非常大)。 非常感谢! 编辑:结果应该是: ...

4 如何合并熊猫数据帧 value_counts 的输出

如何合并熊猫数据帧 value_counts 的输出? 我有一个包含 100 多列的熊猫数据框。 如果我执行: 我怎样才能用最好的 1 行代码合并两个输出并实现上述结果? 此外,我真的需要与原始数据集断开连接的输出,以便我不会将 100 多列合并到答案中。 ...

5 熊猫pivot_table和value_counts不同的结果

所以我有以下情况。 我使用pd.value_counts()并获取例如以下系列: 然后,我执行pd.pivot_table()(以了解X或Y是原因),并跨列求和并获得下表: 如您所见,pivot_table的“ Sum”值与value_counts系列不同。 您还可以注意到, ...

6 每行熊猫数据框的“value_counts”

我有以下形式的pandas数据框: 现在,我想向该数据框中再添加两列,以便新列 - num和count指代在行中出现最多的数字及其计数,即: 我怎么能这样做? ...

7 如何访问熊猫中的value_counts()数据?

在对Panda中的值进行计数时,我应该访问谁? 考虑美国人口普查数据集。 我可以用以下方法计算每个州的县数: 返回的序列看起来像这样: 我该如何访问州名称(实际上我不确定是STNAME还是索引,因为从SQL术语来说,我认为这只是数据视图)。 ...

9 没有从熊猫value_counts()获得0索引

我编写了这段代码,它计算数据帧中某个属性的所有不同值的出现次数。 我面临的问题是我无法通过使用索引0访问第一个值。我在第一个循环运行本身中遇到KeyError:0错误。 total_val_count包含正确的值,如下所示: 34 2887 4 2708 13 2523 ...

10 熊猫-选择最大value_counts行

我有这个简单的数据框df: 我将其分组为: 获得: 然后,我的目标是仅保留每组具有最大value_count的行,以便出现结果数据框: 我也发现这个问题与类似的问题有关,但是我不知道如何在我的情况下应用该方法。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM