客观的
我正在尝试为数据帧中的每一列自动生成一个EDA报告,从value_counts()开始。
问题
问题是我的函数不返回任何内容。因此,虽然它确实打印到控制台,但它不会将相同的输出打印到我的文本文件中。我使用它生成语法,然后在IDE中逐行运行它来查看所有变量,但这不是一个非常程序化的解决方案。
笔记
输出不必是.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()
也试过了
-
print
具有
return
定义EDA(df,名称):
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))
-
从anaconda提示符运行文件
这将导致以下编解码器错误:
(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'
,它们都不能解决这个问题。
-
我试图保存中间变量,它们返回none类型。
testvar = for val in df.columns:
df[val].value_counts(dropna=False)
当我这样做时,testvar是内置模块的非类型对象