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

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

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

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

pandas

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

Q&A

解決済

2回答

184閲覧

pandasでダミー変数を作成したデータを一度にCSVファイルに出力することが出来ずに苦慮しております。

akakage13

総合スコア89

Python

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

pandas

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

0グッド

0クリップ

投稿2017/07/22 08:14

pandasでダミー変数を作成したデータを一度にCSVファイルに出力することが出来ずに苦慮しております。

こちらが、今回のデータセットでございます。

age sex 20 F 22 M 25 M 27 F 21 F 23 M 37 M 31 F 61 M 45 F 41 F 32 M

こちらが、pandasでダミー変数を作成したソースコードでございます。

# -*- coding:utf-8 -*- import codecs import pandas as pd import numpy as np f1 = codecs.open('panda_3.csv', 'w', 'utf-8') # データセットを読み込み df1 = pd.read_csv("dummy_2.csv" , sep=",") # 年齢、性別をダミー変数化 dum_1 = pd.get_dummies(df1["age"]) dum_2 = pd.get_dummies(df1["sex"]) print dum_1,dum_2 # ここで、dum_2を 一括して、CSV に出力することが出来ずに苦慮しております! dum_1.to_csv('panda_3.csv', index=None)

上記のソースコードでは一括して "age","sex"を出力することが出来ません。

目的は、下記のような、CSVファイルの、出力画面にするソースコードを得ることでございます。

20 21 22 23 25 27 31 32 37 41 45 61 F M 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1

先輩方の御教示、よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

既に解決しているようですが、一応回答いたします。

DataFrameの結合方法は、MasashiKimura さんの書かれている通り pandas.concat() で何ら問題ありません。

ですが、わざわざ列毎にバラバラに処理した後に結合しなくても、pandas.get_dummies() を使用することで、agesex 両方同時に処理することが可能です。

Python

1import pandas as pd 2 3df = pd.DataFrame({"age":[20 ,22 ,25 ,27 ,21 ,23 ,37 ,31 ,61 ,45 ,41 ,32],"sex":["F","M","M","F","F","M","M","F","M","F","F","M"]}) 4 5pd.get_dummies(df,columns=["age","sex"]).to_csv("result.csv",index=None)

ですので、もし今後対象となる列が増えるような場合は、こちらを使用した方が良いかと思います。

Column名のPrefixが邪魔な場合は

Python

1pd.get_dummies(df,columns=["age","sex"], prefix="", prefix_sep="")

とすると良いかと思います。

投稿2017/07/22 15:14

magichan

総合スコア15898

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

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

akakage13

2017/07/22 22:03

magichan様、いつも御教示ありがとうございます。 今回も、とても勉強になりました。 今後とも、よろしくお願いいたします。
guest

0

ベストアンサー

pd.concat してください。

Python

1df2 = pd.concat((dum_1, dum_2), axis=1) 2df2 3Out[17]: 4 20 21 22 23 25 27 31 32 37 41 45 61 F M 50 1 0 0 0 0 0 0 0 0 0 0 0 1 0 61 0 0 1 0 0 0 0 0 0 0 0 0 0 1 72 0 0 0 0 1 0 0 0 0 0 0 0 0 1 83 0 0 0 0 0 1 0 0 0 0 0 0 1 0 94 0 1 0 0 0 0 0 0 0 0 0 0 1 0 105 0 0 0 1 0 0 0 0 0 0 0 0 0 1 116 0 0 0 0 0 0 0 0 1 0 0 0 0 1 127 0 0 0 0 0 0 1 0 0 0 0 0 1 0 138 0 0 0 0 0 0 0 0 0 0 0 1 0 1 149 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1510 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1611 0 0 0 0 0 0 0 1 0 0 0 0 0 1

ただし、このまま使うと、マルチコの問題があるので、
20, と F の列を dropしがほうがよいでしょうね。

python

1df3 = df2.drop(20, axis=1) 2df3 = df3.drop('F', axis=1) 3df3 4Out[30]: 5 21 22 23 25 27 31 32 37 41 45 61 M 60 0 0 0 0 0 0 0 0 0 0 0 0 71 0 1 0 0 0 0 0 0 0 0 0 1 82 0 0 0 1 0 0 0 0 0 0 0 1 93 0 0 0 0 1 0 0 0 0 0 0 0 104 1 0 0 0 0 0 0 0 0 0 0 0 115 0 0 1 0 0 0 0 0 0 0 0 1 126 0 0 0 0 0 0 0 1 0 0 0 1 137 0 0 0 0 0 1 0 0 0 0 0 0 148 0 0 0 0 0 0 0 0 0 0 1 1 159 0 0 0 0 0 0 0 0 0 1 0 0 1610 0 0 0 0 0 0 0 0 1 0 0 0 1711 0 0 0 0 0 0 1 0 0 0 0 1 18

投稿2017/07/22 09:45

MasashiKimura

総合スコア1150

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

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

akakage13

2017/07/22 11:04

MasashiKimura様、迅速かつ懇切丁寧な御教示、ありがとうございました。 今後とも、よろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問