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

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

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

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

Q&A

解決済

1回答

991閲覧

xlsxデータの行差分値を算出したい(diff関数の用い方)

nnnnnnnnn

総合スコア1

Python

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

0グッド

0クリップ

投稿2021/01/05 08:19

xlsxデータの行差分値を算出したい

JupyterNotebookでデータ解析を行い、二つのデータの相関をみようと思っています。
一度xlsxデータを取り込み、単回帰分析により相関を出すところまではできたのですが、相関係数の値が低くいまいち傾向が見られなかったので、データ抽出間隔を長くし、再度検討しているところです。
一時間ごとのデータを抽出し、前の行の値を引いて区間値を算出しようとコードを書いていましたが、以下のエラーメッセージが発生しました。

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

AttributeError Traceback (most recent call last) <ipython-input-35-76b39eb5792e> in <module> 1 S8=S7.values ----> 2 print(S8.dif()) AttributeError: 'numpy.ndarray' object has no attribute 'dif'

S8=S7.values

print(S8.diff())
python

試したこと

S8というデータフレームは、取り込んだxlsxデータにラベリングし、そのデータを五行ごとに抽出したものをarrayに変換したものになっています。'sekisann'とラベリングした値のみ一つ前の行との差分を算出したいと考えています。
そのため、差分をとりたいラベルだけ指定したり、arrayに変換しなかったりと試してみましたがうまくいきませんでした。

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

Windows10のInterbetExplorerを用いています。

python始めたばかりで頓珍漢な対処および対処範囲が狭く、大変初歩的な質問で申し訳ないのですが、まったく埒があかなくなってしまったので、ご教授いただければと思います。どうぞよろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

タイプミスでは?

print(S8.dif())をprint(S8.diff())に変えると動きませんか?

diffはS8の後ろに付けるのではなくnumpyモジュールの関数です。使い方は以下です。

python

1>>> import numpy as np 2>>> a = np.array([[0.1, 0.5, 0.3],[0.2, 0.1, 1.0],[2.1, 3.2, 1.8]]) 3>>> print(a) 4[[0.1 0.5 0.3] 5 [0.2 0.1 1. ] 6 [2.1 3.2 1.8]] 7>>> np.diff(a, axis=0) 8array([[ 0.1, -0.4, 0.7], 9 [ 1.9, 3.1, 0.8]]) 10>>> np.diff(a, axis=1) 11array([[ 0.4, -0.2], 12 [-0.1, 0.9], 13 [ 1.1, -1.4]])

投稿2021/01/05 08:47

編集2021/01/06 04:04
ppaul

総合スコア24670

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

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

nnnnnnnnn

2021/01/06 00:16

回答ありがとうございます。投稿のコードが記入ミスです。大変申し訳ございません。 しかしdiffにしても同様のエラーが出てしまいます。 AttributeError Traceback (most recent call last) <ipython-input-14-5a509df28897> in <module> 1 S8=S7.values ----> 2 print(S8.diff()) AttributeError: 'numpy.ndarray' object has no attribute 'diff'
ppaul

2021/01/06 04:05

回答に追加しましたので見てください。 使い方が分からなければどうなったかを質問に追加してください。
nnnnnnnnn

2021/01/06 08:28

numpyモジュール解説していただき、誠にありがとうございます。 相関をみたい行をそれぞれ抽出し(一つは前の行との差分をとったもの・一つは差分データに合わせてデータ数を一つ減らした目的変数)、別々のデータフレームに格納し、散布図を作成するところまで成功いたしました。 さらにそれらを回帰分析したいのですが、そこがうまくできません。 #モデル作成 F = "目的変数 ~ 説明変数" #回帰分析の実行 RES = smf.ols(F,データ名).fit() #結果の出力 RES.summary() に収めれば一番簡単に出せると考えているのですが、二つの抽出した列のデータを一つにまとめ、各列に名前をつける方法でつまづいています。(上のコードでいうデータ名のところにまとめたい) もしくは、これが遠回りな方針であれば、そこについてもアドバイスいただきたいです。 度重なる質問恐縮ですが、よろしくお願いいたします。
ppaul

2021/01/07 15:32

sm.OLSのヘルプで見る限りは、目的変数も説明変数もarray-likeで良いようです。リストやリストのリストでもsm.OLSは動作するし、DataFrameが使いやすければそれでやれば良いということになります。絶対にDataFrameにしなければならないということではありません。
nnnnnnnnn

2021/01/12 08:07

お返事遅くなり、申し訳ございません。 今回は散布図の結果より、相関はないという結果でしたが、別のデータ解析を行う際は、for 変数名 in range()とappend()を用いて差をとったものを格納する配列を作成し、それを再度dataframeにすれば、回帰分析できそうなことがわかりました。コードの知識の幅を広げてなるべくシンプルかつ分かりやすいものを今後も模索していこうと思います。 何度もご教授いただき、誠にありがとうございました。 また投稿する機会がございましたら、どうぞよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問