質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

496閲覧

カラムの中の特定のデータを削除したい。

退会済みユーザー

退会済みユーザー

総合スコア0

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2020/04/06 12:24

この患者_年代カラムの”調査中”データを取り外したいです。
ただ表示しないのではなく、除外し、他の文字列を削除(既知)、dtypeをintにしたいです。

Python

1 2<bound method NDFrame.tail of Unnamed: 0 No 公表_年月日 患者_居住地 患者_年代 患者_性別 備考 30 0 1 2020-01-24 湖北省武漢市 40代 男性 NaN 41 1 2 2020-01-25 湖北省武漢市 30代 女性 NaN 52 2 3 2020-01-30 湖南省長沙市 30代 女性 NaN 63 3 4 2020-02-13 都内 70代 男性 NaN 74 4 5 2020-02-14 都内 50代 女性 NaN 8... ... ... ... ... ... ... .. 91028 1028 1029 2020-04-05 調査中 90代 女性 NaN 101029 1029 1030 2020-04-05 調査中 80代 男性 NaN 111030 1030 1031 2020-04-05 調査中 80代 女性 NaN 121031 1031 1032 2020-04-05 調査中 90代 女性 NaN 131032 1032 1033 2020-04-05 調査中 90代 女性 NaN 14 15[1033 rows x 7 columns]> 16 17>>> dfs['患者_年代'].value_counts() 1830205 1940195 2020161 2150146 2270117 2360115 248045 259017 261017 2710歳未満 8 28調査中 7

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

質問の内容をそのまま実現する方法としては、正規表現あたりを使って数値部分を抜き出す方法となるかとおもいます。

Python

1# '10歳未満'と'10代'は同じ値('10')となるので、'10歳未満'を'0代'に置換 2df['患者_年代'] = df['患者_年代'].replace({'10歳未満':'0代'}) 3# 先頭の数値部分を抜き出す(調査中は数値部分が無いので''となるはず) 4df['患者_年代'] = df['患者_年代'].str.extract('^(\d*)') 5# ''のデータを削除 6df = df[df['患者_年代'] != '']

他の方法としては Series.map() にて全部数値に置き換える方法もあります。
この方法では置換データを全て準備する必用がありますが、この程度であればそれほど手間ではないでしょう。

Python

1df['患者_年代'] = df['患者_年代'].map({ 2 '10歳未満': 0, 3 '10代': 10, 4 '20代': 20, 5 '30代': 30, 6 '40代': 40, 7 '50代': 50, 8 '60代': 60, 9 '70代': 70, 10 '80代': 80, 11 '90代': 90, 12 '調査中': np.nan}) 13 14# 調査中(NaN)データを削除 15df = df.dropna()

ただ私であれば、このくらいのコードを書くのであれば、

dtypeをintにしたいです。

ではなくCategory型のデータに変換するかと思います。

Python

1cat = pd.api.types.CategoricalDtype(categories = ['10歳未満', 2 '10代', 3 '20代', 4 '30代', 5 '40代', 6 '50代', 7 '60代', 8 '70代', 9 '80代', 10 '90代'], 11 ordered=True) 12df['患者_年代'] = df['患者_年代'].astype(cat) 13df = df.dropna()

投稿2020/04/07 00:01

magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/04/07 03:51

ありがとうございます。Category型のデータは平均をとったりできますか?
magichan

2020/04/14 01:59 編集

大変遅くなりました。完全に質問を読み飛ばしておりました。申し訳ありません。 Category型は文字通り分類のための質的変数ですので(上記の場合順序尺度ではありますが)、そのまま平均をとったりなどの計算することはできません。(そもそも’10代’と’20代’の平均などはなんの意味も持たないと思いますが。。。) まあ、どうしてもというのであれば、 Series.cat.codes にてInt型の(量的)変数に変換することはできます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問