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

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

ただいまの
回答率

90.98%

  • Python

    5573questions

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

パイソンにおける配列の列分割

解決済

回答 2

投稿

  • 評価
  • クリップ 1
  • VIEW 126

zazenjp

score 1

前提・実現したいこと

人口知能による解析をchainerを用いて試みています。ファイル('T','log(A/T)',の2列のデータとラベル('Work')計3列のデータが854行含まれている)。まずファイルを読み込んでデータとラベルに分割し、その後学習用データとテストデータに分割しようと思っているのですが、まず最初に読み込んだ配列(data_f)をデータとラベルに分割できません。ソースコードをnotebookに打ち込み、実行するとエラーはないです。次にlabel=data_f[:2]と入れて実行するとエラーはないですが、ファイルにある1行目と2行目のみlabelに代入されます。ファイルにある854行全てについて0,1列にあるデータと、2列にあるラベルを全ての行について分離するにはどうすればよろしいでしょうか。また、分離した後、trainとtestに分割したいのですが、そのコードも教えて頂けますと幸いです。

発生している問題・エラーメッセージ

うまく列を分離できない。

エラーメッセージ


なし

該当のソースコード

import numpy as np
import pandas as pd
import chainer
from chainer import cuda, Function, gradient_check, report, training, utils, Variable
from chainer import datasets, iterators, optimizers, serializers
from chainer import Link, Chain, ChainList
import chainer.functions as F
import chainer.links as L
from chainer.training import extensions
# csvファイルの読み込み
data_f = pd.read_csv('svmdattotal.csv', header=0)
# 関係ありそうなT,lohg(A/T),Workのみを使う
data_f = data_f[["T", "log(A/T)", "Work"]]

試したこと

課題に対してアプローチしたことを記載してください
label=data_f[:2]としました。

補足情報(言語/FW/ツール等のバージョンなど)

より詳細な情報
python 3.5.3[Anaconda 4.4.0 (64bit)です。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • can110

    2018/01/17 16:45

    正しく読込&3列抽出できているか確認するため「print(data_f)」「print(data_f.info())」を実行した結果を追記ください。

    キャンセル

  • zazenjp

    2018/01/18 10:05 編集

    回答遅れ申し訳ありません。print(data_f)の結果は T log(A/T) Work 0 0.390278 3.979983 1 1 0.383889 4.046218 1 2 0.010000 5.267795 0 3 0.008056 5.087501 0 4 0.541667 4.023916 1 5 0.007500 5.549139 0 6 0.009167 5.486451 0 7 0.350000 3.860053 1 8 0.010556 5.219617 0 9 1.127778 3.224544 1 10 0.329444 3.780369 1 11 0.011944 5.495904 0 12 0.617778 3.732815 1 13 0.023056 4.882823 0 14 0.000556 6.724604 0 15 0.001389 6.129289 0 16 0.002778 5.793970 0 17 0.002778 5.779209 0 18 0.162222 4.067566 1 19 0.256111 3.796637 1 20 0.009722 4.935774 0 21 0.004444 5.614368 0 22 0.002778 5.602253 0 23 0.162778 3.835163 1 24 0.008889 4.990652 0 25 0.016944 5.096955 0 26 0.269444 3.801137 1 27 0.263611 3.994896 1 28 0.006111 5.629739 0 29 0.005556 5.547617 0 .. ... ... ... 824 0.456667 3.811611 1 825 0.529167 3.916078 1 826 0.568889 3.677890 1 827 0.578889 3.676807 1 828 0.594722 3.739211 1 829 0.615833 3.722005 1 830 0.619444 3.800971 1 831 0.662778 3.678503 1 832 0.826111 3.696323 1 833 1.000833 3.722267 1 834 0.000556 6.941938 0 835 0.001667 6.086186 0 836 0.001667 5.850122 0 837 0.003611 5.480616 0 838 0.005000 5.988385 0 839 0.021389 5.102729 0 840 0.026111 5.159309 0 841 0.106389 4.468583 0 842 0.126111 3.774630 1 843 0.156944 3.797850 1 844 0.165278 3.697753 1 845 0.169444 3.700691 1 846 0.171111 3.695547 1 847 0.189167 3.683908 1 848 0.210278 3.739462 1 849 0.215278 3.791311 1 850 0.216667 3.795328 1 851 0.229722 3.884094 1 852 0.268333 3.635184 1 853 0.521389 3.800835 1 [854 rows x 3 columns]で print(data_f.info())の結果は <class 'pandas.core.frame.DataFrame'> RangeIndex: 854 entries, 0 to 853 Data columns (total 3 columns): T 854 non-null float64 log(A/T) 854 non-null float64 Work 854 non-null int64 dtypes: float64(2), int64(1) memory usage: 20.1 KB None です。

    キャンセル

  • can110

    2018/01/18 10:23

    追記ありがとうございます。3列抽出できていますね。なお、この欄はマークダウン記法が使えないため、回答本文に追記(修正)いただくと見やすくなります。

    キャンセル

回答 2

checkベストアンサー

+1

ちょっと問題読み違えているかもしれませんが、data_f[:2]だと行方向の抽出になります。
列の抽出はまさしくdata_f = data_f[["T", "log(A/T)", "Work"]]でできています。
よってラベルとデータ列の抽出コードは以下のようになります。

import pandas as pd
# サンプルデータ
df = pd.DataFrame({'T' : [0.1, 0.2, 0.3], 'log(A/T)' : [1.1, 2.1, 3.1], 'Work' : [0,1,2]})
df = df[['T','log(A/T)','Work']]

# ラベル
label = df[['Work']]
print(label)
"""
   Work
0     0
1     1
2     2
"""

# データ
data = df[['T','log(A/T)']]
print(data)
"""
     T  log(A/T)
0  0.1       1.1
1  0.2       2.1
2  0.3       3.1
"""


なおchainer使ったことないため、データの分割については私には回答できません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/01/18 10:29

    ありがとうございました。

    キャンセル

0

a[:, :2]でどうでしょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/01/18 09:54

    回答遅れ、申し訳ありません。label=data_f[:, :2]
    labelとすると


    ---------------------------------------------------------------------------
    TypeError Traceback (most recent call last)
    <ipython-input-6-bff1b1779a79> in <module>()
    ----> 1 label=data_f[:, :2]
    2 label

    ~\Anaconda3\envs\chainenv\lib\site-packages\pandas\core\frame.py in __getitem__(self, key)
    2137 return self._getitem_multilevel(key)
    2138 else:
    -> 2139 return self._getitem_column(key)
    2140
    2141 def _getitem_column(self, key):

    ~\Anaconda3\envs\chainenv\lib\site-packages\pandas\core\frame.py in _getitem_column(self, key)
    2144 # get column
    2145 if self.columns.is_unique:
    -> 2146 return self._get_item_cache(key)
    2147
    2148 # duplicate columns & possible reduce dimensionality

    ~\Anaconda3\envs\chainenv\lib\site-packages\pandas\core\generic.py in _get_item_cache(self, item)
    1838 """Return the cached item, item represents a label indexer."""
    1839 cache = self._item_cache
    -> 1840 res = cache.get(item)
    1841 if res is None:
    1842 values = self._data.get(item)

    TypeError: unhashable type: 'slice'
    というエラーがでます

    キャンセル

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

  • ただいまの回答率 90.98%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Python

    5573questions

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