RまたはStataが推奨される健康科学コースを行っています。将来、金融時系列分析に使用したいので、代わりに Python / Numpy / Pandas を使用しようとしています。
データは Stata 形式だったので、フィールドをコピーしてCSV
. はい/いいえの列がいくつかあり、その中には空白のフィールドがあることを除いて、すべてのフィールドのインポートは問題ありません。
インポートコマンドは
fhs = pd.io.parsers.read_csv('F:\\BioStatistics\\fds\\fhs_c2.csv', header=0, index_col=0)
空白のフィールドがある場合、dtype はオブジェクトです (意味があります)。
空白がない場合、一部の列は に変換されTRUE/FALSE
、他の列Yes/No
はそのままですが、dtype は bool です。理由はありますか?
すべてを 1 つの dtype でまとめて表示 + 統計分析の 1 つの方法を表現したいと考えています。
スペースのないブール列の空白セルを先頭に行を追加することでこれを達成しました。そのため、すべてがオブジェクトになります。次に
fhs = fhs.drop([1002])
、その行を削除するために使用しますが、データ型は引き続き良好です。
この行なしで保存して、毎回「正しい」タイプでデータをロードできるようにしたいのですが、一部の列がすべて「はい」または「いいえ」になり、一部が空白になる可能性があるかどうかはわかりません細胞。出来ますか?
ありがとう、初心者の質問でごめんなさい。
例:
輸入中
C1 C2 C3
R1 Yes Yes No
R2 No No No
R3 Yes Yes
R4 Yes Yes Yes
最初の列は、Yes、No、Yes、Yes として df に入ります。下に bool xxxx と入力します。
2 列目は、Yes、No、NaN、Yes 型オブジェクトとして df に入ります
3 列目は FALSE、FALSE、TRUE、TRUE 型の bool として df に入ります
くそ。ちょうどチェックしました。私は間違っていた。はいといいえの場合、列の型はオブジェクトです。
インポートするときに、それらをすべてオブジェクトにして yes と no に固執するように伝えたいと思います。理由は次のとおりです。他のクラスメンバーはイエスとノーを見ます
解決策を試してみたところ、どうなりましたか。
これが私のデータです: リンク
コードは次のとおりです:
from pandas import *
import numpy as np
import pandas as pd
def convert_bool(col):
if str(col).title() == "True": #check for nan
return "Yes"
elif str(col).title() == "False":
return "No"
else:
return col
fhs = pd.read_csv('F:\\BioStatistics\\fds\\StatExport.csv', converters={"death": lambda x:convert_bool(x)}, header=0, index_col=0)
および出力リンク