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

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

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

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

pandas

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

Q&A

解決済

1回答

1865閲覧

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

bkts94441

総合スコア18

Python 3.x

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

pandas

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

0グッド

0クリップ

投稿2017/12/06 06:03

編集2018/01/23 07:55

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

#読み込みファイル構造

#問題点
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

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

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

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

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

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

guest

回答1

0

ベストアンサー

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


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

python

1import numpy as np 2import pandas as pd 3from io import StringIO 4 5s = """ 6 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 70 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 81 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 92 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 103 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 114 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 125 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 13""" 14def SelectFFT(): 15 df = pd.read_csv( StringIO(s), sep=" ", skipinitialspace=True) 16 #print(df) 17 18 inp_Date = input("date:") 19 inp_ClockTime = input("time:") 20 inp_mt = int(input("motion:")) 21 inp_ss = int(input("speed:")) 22 23 df_sel = df.loc[(df['Date']==inp_Date) & (df['ClockTime']==inp_ClockTime) & (df['motion_type']==inp_mt) & (df['speed_setting']==inp_ss)] 24 print(df_sel[['Date','ClockTime','motion_type','speed_setting']]) 25############################################# 26SelectFFT() #関数呼び出し 27 28''' 29date:2017/8/24 30time:00:00.0 31motion:0 32speed:0 33 Date ClockTime motion_type speed_setting 340 2017/8/24 00:00.0 0 0 351 2017/8/24 00:00.0 0 0 36'''

投稿2017/12/06 06:06

編集2017/12/06 08:39
mkgrei

総合スコア8560

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

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

bkts94441

2017/12/06 06:30

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

2017/12/06 06:41

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

2017/12/06 06:43

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

2017/12/06 06:46

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

2017/12/07 07:01 編集

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

2017/12/07 07:07

私の追加したコードでうまく実行できるのであれば、CSVファイル読み込みで想定外のことが起きているはずです。 ①エンコードに問題がある ②制御文字に問題がある ③型に問題がある のあたりが一般的です。 以下のようなものを参考にして型を強制することで改善する可能性があります。 https://pythondatascience.plavox.info/pandas/csvファイルの読み込み https://qiita.com/haru1977/items/53c582eb9e264ccf8574
bkts94441

2017/12/08 08:14

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問