цель
Я пытаюсь автоматически сгенерировать отчет 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()
также пытался
различные версии замены print
на return
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))
запуск файла из командной строки 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'
, но ни один из них не решил эту проблему.
Я пытался сохранить промежуточные переменные, которые не возвращают ни одного типа.
testvar = for val in df.columns:
df[val].value_counts(dropna=False)
когда я делаю это, testvar является объектом NoneType встроенного модуля