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

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

ただいまの
回答率

91.35%

  • Python 3.x

    2406questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • pandas

    202questions

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

input関数でグラフラベルの条件一致方法

解決済

回答 1

投稿 2017/12/06 15:03

  • 評価
  • クリップ 0
  • VIEW 66

bkts94441

score 9

実現したいこと

CSVファイルを読み込んだ後、B列とC列を手入力で日付と時間を指定してX軸に、手入力でD列とE列に適切な値を入力してJ列以降のデータ列をY軸に当て、最後に、上記の条件に適切なX軸,Y軸のグラフを出力させたい。
前回と同じ質問になり恐縮ですが、再度質問させていただきます。

読み込みファイル構造

      Date    ClockTime    motion_type    speed_setting    iteration    Temp1    Temp2    Temp3    section0_position1_count    section0_position1_mean    section0_position1_std    section0_position1_min
0    2017/8/24    00:00.0    0    0    0    0    0    0    14647    -32.32229169    23.8568587    -75.08892882
1    2017/8/24    00:00.0    0    0    1    0    0    0    14648    -32.39794386    23.90340666    -75.08891683
2    2017/8/24    00:00.0    0    0    2    0    0    0    14647    -31.66764895    23.44001228    -75.08892283
3    2017/8/24    00:00.0    0    0    3    0    0    0    14648    -31.29547116    23.19143941    -75.08892882
4    2017/8/24    00:00.0    0    0    4    0    0    0    14647    -32.21509856    23.79033633    -75.08892283
5    2017/8/24    00:00.0    0    0    5    0    0    0    14647    -34.13307802    24.88413157    -75.08891683
        .            .       .    .    .    .    .    .      .            .               .             .
        .            .       .    .    .    .    .    .      .            .               .             .
        .            .       .    .    .    .    .    .      .            .               .             .

問題点

input()関数で試してみましたが、入力した文字列・値とCSVファイルの照合が出来ませんでした。
下記ソースコードで実行して、
Date,ClockTime,motion_type,speed_setting
の値を正しく入力してもEmpty DataFrameになってしまいます。

date:2017/8/24
time:00:0.0
motion:0
speed:0
Empty DataFrame
Columns: [Date, ClockTime, motion_type, speed_setting]
Index: []

ソースコード

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

##########################################
#############データ選択図関数##############
##########################################
def SelectFFT():
    df = pd.read_csv("./file.csv")
    #print(df)

    inp_Date      = input("date:")
    inp_ClockTime = input("time:")
    inp_mt        = int(input("motion:"))
    inp_ss        = int(input("speed:"))

    df_sel = df.loc[(df['Date']==inp_Date) & (df['ClockTime']==inp_ClockTime) & (df['motion_type']==inp_mt) & (df['speed_setting']==inp_ss)]
    print(df_sel[['Date','ClockTime','motion_type','speed_setting']])
#############################################
SelectFFT() #関数呼び出し

再度同じ質問をしてしまい、申し訳ありませんがご教授お願い致します。

使用環境

Python3.5.2
Jupyter Notebook

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

checkベストアンサー

0

入力したデータが文字列になっているためではないでしょうか。


一部https://teratail.com/questions/101388のcan110さんのコードを拝借して、input()関数を使ってみましたが、正しく出力されるようです。

import numpy as np
import pandas as pd
from io import StringIO

s = """
     Date    ClockTime    motion_type    speed_setting    iteration    Temp1    Temp2    Temp3    section0_position1_count    section0_position1_mean    section0_position1_std    section0_position1_min
0    2017/8/24    00:00.0    0    0    0    0    0    0    14647    -32.32229169    23.8568587    -75.08892882
1    2017/8/24    00:00.0    0    0    1    0    0    0    14648    -32.39794386    23.90340666    -75.08891683
2    2017/8/24    12:00.0    0    1    2    0    0    0    14647    -31.66764895    23.44001228    -75.08892283
3    2017/8/24    23:00.0    0    0    3    0    0    0    14648    -31.29547116    23.19143941    -75.08892882
4    2017/8/25    00:00.0    1    0    4    0    0    0    14647    -32.21509856    23.79033633    -75.08892283
5    2017/8/25    00:00.0    0    1    5    0    0    0    14647    -34.13307802    24.88413157    -75.08891683
"""
def SelectFFT():
    df = pd.read_csv( StringIO(s), sep=" ", skipinitialspace=True)
    #print(df)

    inp_Date      = input("date:")
    inp_ClockTime = input("time:")
    inp_mt        = int(input("motion:"))
    inp_ss        = int(input("speed:"))

    df_sel = df.loc[(df['Date']==inp_Date) & (df['ClockTime']==inp_ClockTime) & (df['motion_type']==inp_mt) & (df['speed_setting']==inp_ss)]
    print(df_sel[['Date','ClockTime','motion_type','speed_setting']])
#############################################
SelectFFT() #関数呼び出し

'''
date:2017/8/24
time:00:00.0
motion:0
speed:0
        Date ClockTime  motion_type  speed_setting
0  2017/8/24   00:00.0            0              0
1  2017/8/24   00:00.0            0              0
'''

投稿 2017/12/06 15:06

編集 2017/12/06 17:39

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/12/06 15:30

    "/" , "." , ":" 等の記号は文字列として入力するものだと思っていました。
    上記の記号を数値として読み込ませる方法はございますでしょうか。

    キャンセル

  • 2017/12/06 15:41

    df['Date']やdf['ClockTime']は文字列として保持しているのでしょうか。
    print(df.dtypes)をしてみるとわかるはずです。

    キャンセル

  • 2017/12/06 15:43

    別の可能性として、実は' 2017/8/24'のようにスペースがデータに紛れ込んでいたり。

    キャンセル

  • 2017/12/06 15:46

    #print(df)
    を消されているということは、一度正しくデータを読み込めることを確認したということでしょうか。
    読み込みファイル構造がそのままfile.csvだと区切り文字がデフォルトでは正しくないので、読み込みに失敗している可能性もあります。

    キャンセル

  • 2017/12/07 16:01 編集

    お返事遅れて申し訳ありません。ご回答ありがとうございます。
    dfでデータを読み込みは出来ています。
    ご回答いただいた通りのプログラムを実行したら出力出来ました。
    しかし、CSVファイルのデータが600個近くあり、どうしてもデータフレームに代入して出力したいのですが、s=```で囲った範囲しか参照出来ないのでしょうか。

    キャンセル

  • 2017/12/07 16:07

    私の追加したコードでうまく実行できるのであれば、CSVファイル読み込みで想定外のことが起きているはずです。
    ①エンコードに問題がある
    ②制御文字に問題がある
    ③型に問題がある
    のあたりが一般的です。

    以下のようなものを参考にして型を強制することで改善する可能性があります。
    https://pythondatascience.plavox.info/pandas/csvファイルの読み込み
    https://qiita.com/haru1977/items/53c582eb9e264ccf8574

    キャンセル

  • 2017/12/08 17:14

    mkgreiさん
    まだ問題がすべて解決していませんが、
    解決策が見えてきたので頑張ってみようと思います。
    ご回答及び、アドバイスしていただきありがとうございます。

    キャンセル

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

ただいまの回答率

91.35%

関連した質問

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

  • Python 3.x

    2406questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • pandas

    202questions

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