20/01/07 19:13:26.51 cN6CR2jQ.net
結果
0 1700
1 0
2 0
3 0
4 0
0 0
1 0
2 0
3 0
なんでインデックスが4まで行くと0になってしまうのでしょう?
アホみたいですが、教えて下さい。
82:デフォルトの名無しさん
20/01/07 19:22:14.99 cN6CR2jQ.net
>>81
すいません。
自己解決しました。
関数の呼び出し先の問題でした。
疲れ切ってます。 org
83:デフォルトの名無しさん
20/01/07 19:50:51.58 cN6CR2jQ.net
連投すいません
x latency_msec
1 1700
2 1701
3 1702
4 1703
5 1704
6 1705
7 1706
8 1707
9 1708
df = input_data()
print(df.iloc[1][1])
とすると
ValueError: Can only index by location with a [integer, integer slice (START point is INCLUDED, END point is EXCLUDED), listlike of integers, boolean array]
となります。
なぜでしょう・・・。
Pandasよくわからない・・・。
84:デフォルトの名無しさん
20/01/07 19:55:20.61 Bxvs3Isv.net
df.iloc[1,1]
85:デフォルトの名無しさん
20/01/07 20:03:44.84 cN6CR2jQ.net
>>83
すいません。
無視してください、また変なこと聞きました。
もう無理だ・・・寝ます・・・。
86:デフォルトの名無しさん
20/01/07 22:05:07 cN6CR2jQ.net
q75, q25 = np.percentile(col, [75 ,25])
colが整数だけのときは正しい値が入るのですが、colに少数が入ると0.0になってしまいます
np.percentileって少数には使えないのでしょうか?
87:デフォルトの名無しさん
20/01/07 22:19:19 sMehhi+2.net
>>86
a = np.array([[10.4, 7.8, 4.5], [3, 2, 1]])
np.percentile(a, [72,25])
#=> array([6.48, 2.25])
問題なさそうだけど?
88:デフォルトの名無しさん
20/01/07 23:10:02 cN6CR2jQ.net
>>87
あれ、本当ですね
ここが原因と思ってたら何が原因か分からなくなってきた
89:デフォルトの名無しさん
20/01/07 23:17:56 cN6CR2jQ.net
四分位範囲で外れ値の値だったばあいフラグを立てる関数を作ったのですが、
なぜかデータが整数では正常動作するのに、少数が含まれているとフラグで1を立てても0になります。
かれこれ数時間悪戦苦闘しているのですが、原因わからず・・・。
どこかにコードを書き込んで質問できればいいのですが、そのような掲示板ありませんでしょうか?
本当に初心者ですいません。
90:デフォルトの名無しさん
20/01/07 23:30:09.50 Es2WAZts.net
つideone
91:デフォルトの名無しさん
20/01/07 23:55:26.90 cN6CR2jQ.net
>>90
ありがとうございます。
92:デフォルトの名無しさん
20/01/07 23:57:52.11 cN6CR2jQ.net
URLリンク(ideone.com)
40行目の
df.iloc[i][output_column] = 1
が怪しいとおもうのですが、取り込んだdfが整数だけのときは1が書き込めているのですが、
dfに小数が含まれているときは書き込めていないようです。
なぜなのでしょう・・・・・。
93:デフォルトの名無しさん
20/01/08 12:53:13.99 U2S7mQMy.net
>>92
↓この警告出てるよね? リンク先みて警告を消そう
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: URLリンク(pandas.pydata.org)
とりあえず df.loc[i, output_column] = 1 にすれば動くけど
普通はenumerateとかせずにapply使う場面だと思う
df[output_column] = df[chk_column].apply(is_outlier)
94:デフォルトの名無しさん
20/01/08 17:08:03.84 Sre2vN3k.net
df['price_edited'] = df['price'].apply(lambda a: int(a[1:]) if a.startswith('$') else 0)
95:デフォルトの名無しさん
20/01/08 18:24:29.64 xdUcjCBz.net
>>67
クリックできるようになるまで待つのをやめて、ボタンが現れるのに十分と思われる時間待った後で普通にクリックしてみる。
そうするとなんでクリックできないのか分かるかもしれない。
96:デフォルトの名無しさん
20/01/08 19:32:52.69 j91Gwtaz.net
map, filter, reduceとか色々あるけど、pythonでこの辺って使う機会ある?
97:デフォルトの名無しさん
20/01/08 19:59:10.33 NG22H+Rz.net
ほとんどない
リスト内包表記の方が可読性高いし、複雑な処理にはどうせpandasとか使うし
98:デフォルトの名無しさん
20/01/08 20:02:38.71 cyxQSndQ.net
pythonに限らずどの言語でも用意されてるがどの言語でも使わない
99:デフォルトの名無しさん
20/01/08 20:06:21.39 HaPwADKT.net
mapは、リスト中の数字と数値を数字に統一して、ソートできるように再マッピングするときに使うことはある
100:デフォルトの名無しさん
20/01/08 20:07:25.06 cBWLj0dO.net
>>98
じゃあどうするの?
for文?
101:デフォルトの名無しさん
20/01/08 20:10:23.35 v4o4ZY0H.net
>>96
mapは内包表記を使うほどでもないとき
競技プログラミングとかで入力を全部int型のリストに置き換えるときとかに使うぞ
a,b,c = map(int,input().split())って感じで
102:デフォルトの名無しさん
20/01/08 20:28:49.09 w1X5ZQ1+.net
なるほどlambda書かなくていいケースなら短いんだな
103:デフォルトの名無しさん
20/01/08 20:31:21.99 rc02anx7.net
競プロで使うといえば、sys.stdinとcollections.dequeも
104:デフォルトの名無しさん
20/01/08 21:13:48.14 U2S7mQMy.net
>>96
個人用のコードの場合はcurryやpipeと合わせてそこそこ使うけど
他人が読み書きするコードの場合は基本的に内包表記に揃えてる
他の言語と違ってpythonの場合は
そのままだと処理つなげないからmap/filter/reduceだと簡潔に書けない
105:デフォルトの名無しさん
20/01/08 21:16:10.78 cBWLj0dO.net
>>98
ねえねえ
106:デフォルトの名無しさん
20/01/08 21:23:57.62 rc02anx7.net
むしろ、内包表記の方が使わんわ
107:デフォルトの名無しさん
20/01/08 21:28:12.52 cyxQSndQ.net
昔はシュワルツ変換とかあったが今のpythonじゃそんなの聞かないだろ?
108:デフォルトの名無しさん
20/01/08 21:28:32.46 j91Gwtaz.net
>>101
mapってこれa,b,cに直で突っ込めるん?
109:デフォルトの名無しさん
20/01/08 21:48:20.80 rc02anx7.net
>>108
URLリンク(ideone.com)
URLリンク(docs.python.org)
110:デフォルトの名無しさん
20/01/09 09:06:17.58 CHl595iH.net
>>106
競プロのことは知らないけど、内包表記の方が基本短くならない?なにか違う理由で使わないの?
111:デフォルトの名無しさん
20/01/09 10:22:53 CxgUH5at.net
バイト列に関して質問です。
文字タイプのバイト列情報の文字を、日本語に復元したいです。
例えば、
\x12\x34\x56\x78
という文字列があります。
これを
あいう
のような意味のわかる日本語にしたいです。
その場合、
print(b'\x12\x34\x56\x78'.decode('cp932'))
で復元できます。
そこで、復元したい文字列は複数あるので、
\x12\x34\x56\x78 を変数に代入してから、
for文で復元しようとしています。
しかし、変数に代入したら b をつけられません。
どうすればバイト列にしてから復元できるのでしょうか?
112:デフォルトの名無しさん
20/01/09 10:37:07.44 I9hACzJa.net
b'\x12\x34\x56\x78'を入れちゃだめなの?
113:デフォルトの名無しさん
20/01/09 11:18:23.26 nzRPJUvL.net
データフレームのラベルにlatency[msec]と単位をいれたいのですが、
lm_model = smf.ols(formula="latency[msec]~x", data=df).fit()
とすると
latency is not define
となります。
latency_msecとするとokなのですが[]や()を使うとダメ
[]、()をラベルに使ってはいけないのでしょうか?
114:デフォルトの名無しさん
20/01/09 11:29:08.27 m2IVdqCX.net
>>112
レスありがとうございます。
変数にb'\x12\x34\x56\x78'を入れるということでしょうか?
bと文字列 \x12\x34\x56\x78 を合体させる方法が分からないんですよね・・・
115:デフォルトの名無しさん
20/01/09 12:33:47.44 0RBXSUPh.net
numpy とか pandas 使うとそっちで解決しちゃう
116:デフォルトの名無しさん
20/01/09 12:39:08.38 j8mTnocC.net
>>110
それ答えてもいいけど、過去何度も何度も繰り返された議論が始まるだけだぞ
117:デフォルトの名無しさん
20/01/09 12:45:59.86 81iybZRX.net
>>114
s = '\x12\x34\x56\x78'
b = s.encode('latin-1')
118:デフォルトの名無しさん
20/01/09 15:59:03.66 VxfXfT1S.net
>>111
string = '¥x82¥xa0¥x82¥xa2¥x82¥xa4'
hexstr = string.encode('unicode_escape').decode('utf-8').replace('¥¥x', '')
print(bytes.fromhex(hexstr).decode('cp932'))
URLリンク(www.onlinegdb.com)
119:デフォルトの名無しさん
20/01/09 16:52:22.09 OQFCwUQr.net
l = [[1,2,3],[4,5]]
から
[1,2,3,4,5]
に変形したいのですが、リスト内包表記だけでできますか?
120:デフォルトの名無しさん
20/01/09 17:49:39.42 CxgUH5at.net
>>117
すみません、
出来ませんでした
>>118
すみません、出来ませんでした
121:デフォルトの名無しさん
20/01/09 18:04:23.16 VxfXfT1S.net
>>119
できるけどやめれ
foo = [[1,2,3],[4,5]]
[x for inner in foo for x in inner]
#=> [1, 2, 3, 4, 5]
122:デフォルトの名無しさん
20/01/09 18:05:14.78 VxfXfT1S.net
>>120
↓これ動かないの?
URLリンク(www.onlinegdb.com)
123:デフォルトの名無しさん
20/01/09 18:11:11.27 CxgUH5at.net
>>122
全部見てませんでしたすみません
そちらは動きました。
自分のでも動くか試してみます
124:デフォルトの名無しさん
20/01/09 18:53:25.08 KHoLcO1x.net
>>119
sum(l,[])
125:デフォルトの名無しさん
20/01/09 19:12:34.29 NaQHxKOV.net
>>124
はえ~シンプル
一階層だけならこれでいいな
126:119
20/01/09 19:42:16.05 DanfNow/.net
>>121 のやり方が3次元以上でも対応できるのでいいですね。
おっさんありがとう。
127:デフォルトの名無しさん
20/01/09 19:56:28.10 nuQhSBU1.net
map, reduce, filterと来れば次はflatten
でもpython標準にはない
128:デフォルトの名無しさん
20/01/09 20:03:36.46 vYl+3riX.net
>>> np.array([[1,2,3],[4,5,6]]).flatten()
array([1, 2, 3, 4, 5, 6])
>>> np.array([[1,2,3],[4,5]]).flatten()
array([[1, 2, 3], [4, 5]], dtype=object)
めんどいな
129:デフォルトの名無しさん
20/01/09 20:06:14.36 vYl+3riX.net
>>> pd.DataFrame([[1,2,3],[4,5]]).flatten()
AttributeError: 'DataFrame' object has no attribute 'flatten'
>>> pd.Series([[1,2,3],[4,5]]).flatten()
AttributeError: 'Series' object has no attribute 'flatten'
>>> list(int(_[1]) for _ in pd.concat(pd.Series(_[1:]) for _ in pd.DataFrame([[1,2,3],[4,5]]).itertuples()).iteritems() if not np.isnan(_[1]))
[1, 2, 3, 4, 5]
めんどい
130:デフォルトの名無しさん
20/01/09 20:41:39.72 ZiyVM7wM.net
df.query("tag.str.contains('log')")
だと、'LOG'や'Log'にマッチしないですが、queryを使った何か方法あります?
131:デフォルトの名無しさん
20/01/09 20:49:32.76 vYl+3riX.net
df.query("tag.str.contains('log') or tag.str.contains('LOG') or tag.str.contains('Log')")
132:デフォルトの名無しさん
20/01/09 20:50:05.73 hJpPvhWv.net
dfにlower()を適用した行を追加する
133:デフォルトの名無しさん
20/01/09 20:54:34.17 vYl+3riX.net
df.query("tag.str.contains('log', case=False)")
または
df.query("tag.str.contains('[lL][oO][gG]')")
134:130
20/01/09 20:59:41.18 ZiyVM7wM.net
case=Falseでいいです。
おっさんありがとう。
135:デフォルトの名無しさん
20/01/09 21:05:50.10 o7IUVb3B.net
あなたのハゲにサクセスしたい
136:デフォルトの名無しさん
20/01/09 22:29:38.19 rdMUJkc5.net
散布図書いて
凡例1:回帰直線あり
凡例2:回帰直線なし
としたいんですが
sns.lmplot(x="total_bill", y="tip", hue="smoker", data=tips, legend=False, fit_reg=False)
とfit_regを使うと凡例1、2とも回帰直線あり、なしで統一されますよね。
凡例ごとに回帰直線あり、なしを設定する方法ないでしょうか?
137:デフォルトの名無しさん
20/01/09 22:30:27.61 rdMUJkc5.net
もしくはlmplotで凡例1の回帰直線を書いて、
その後に凡例にの散布図を重ねるとかできるといいのですが・・・。
138:デフォルトの名無しさん
20/01/10 08:58:33.71 rEsoa4AS.net
pywinautoをインストールし、以下を実行するとエラーが出ます。
Python 3.7.6 (tags/v3.7.6:43364a7ae0, Dec 19 2019, 00:42:30) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from pywinauto.application import Application
---中略----
TypeError: item 2 in _argtypes_ passes a union by value, which is unsupported.
>>>
何かご存じの方いらっしゃいませんか?
139:デフォルトの名無しさん
20/01/10 17:45:23.17 DFPKFrGt.net
win32apiは用意されてるのかな
140:デフォルトの名無しさん
20/01/10 18:01:26.41 rEsoa4AS.net
>>139
pywin32 221はインストールしてあります。
import win32api
と入力しても何も言われないので、インポートできてると思われます。
141:デフォルトの名無しさん
20/01/10 18:33:13.96 ygDjj+Gv.net
>>138
これかもね
URLリンク(github.com)
142:デフォルトの名無しさん
20/01/10 19:11:57.27 rEsoa4AS.net
>>141
python3.7.4に下げたところ、うまく動きました!!
大変助かりました。ありがとうございました!
143:デフォルトの名無しさん
20/01/11 12:56:53.77 +sNn4E0T.net
Webサイトの動的なパラメータを取得し、
PythonでCSVに保存したいのですが、
requestsでのJSの動的なパラメーターの操作・取得方法が分かりません。
どのようにしたらいいでしょうか?
具体的には"URLリンク(fast.com)で通信速度を定期的に
測りたいです。
144:デフォルトの名無しさん
20/01/11 13:14:12.97 I3GzSO2X.net
api直で叩けるならrequestsでいいけど、
普通はseleniumの出番じゃないかな。
結果表示のelementが表示されるまで待って、そのあとselectorを使って読み取る。
145:デフォルトの名無しさん
20/01/11 18:57:41.73 8SjMRVd0.net
wxpythonのcomboboxを連携させる場合ってどうやればいいんですかね?
gyou = ('あ行','か行','さ行')
a = ('あたい,'いか','うなぎ','えのぐ,'おもいで')
k = ('かみなり','きなこ','くまで','けむし','こたつ')
s = ('さしみ','しらす','するめ','めまい','もも')
のリストを作り、
combobox_1 = wx.Combobox(panel1, -1, choices = '行',style=wx.CB_DROPDOWN, pos=(0, 390),size=(150, 20))
で選択された値をcombobox_2に反映させたいのですが、うまくいきません
146:デフォルトの名無しさん
20/01/11 19:07:58.90 l/QLWHKH.net
URLリンク(wxpython-users.1045709.n5.nabble.com)
147:デフォルトの名無しさん
20/01/11 19:12:33.28 l/QLWHKH.net
URLリンク(www.python-izm.com)
148:デフォルトの名無しさん
20/01/11 21:39:28.93 8SjMRVd0.net
>>146
>>147
ありがとうございます。
理解できるようがんばります。
149:デフォルトの名無しさん
20/01/11 22:10:14.08 mXX0vnIh.net
全体の質問スレがなかったのでここに質問します
私はWebサービス作れたら面白いな程度に考えています。そこで質問があります。いきなりPythonで大丈夫でしょうか?基盤となる他の言語があるのでしょうか?また、Webサービスを作れるものなのでしょうか?具体例ではTwitterなど超有名なものが出されるので…
150:デフォルトの名無しさん
20/01/11 22:18:24.21 IeHCZeyd.net
型ヒントつけまくったら速度って向上すんのかな
あくまで可読性の問題?
151:デフォルトの名無しさん
20/01/11 22:20:37.40 mXX0vnIh.net
これくだすれってコードすれですかね?
でしたら上のやつ無視してくださいすみません
152:デフォルトの名無しさん
20/01/11 22:31:40.00 tdQ2h9sk.net
くだすれって何なの?
意味がわからん
153:デフォルトの名無しさん
20/01/11 22:56:40.09 cnAODivo.net
>>150
type hintは基本的に3rd partyのtype checker用なので
何もせずに速度が向上したりはしない
型をチェックして適切な実装を選択することで実行速度が変わるようなロジックを自分で作ったり
そういうライブラリを使えばhint無しよりは速度が向上する可能性はなきにしもあらず
3.7より前のバージョンはtype hintをコードの読み込み時に評価するので
評価コストの分だけtype hintがあると読み込みが遅い(らしいが、気にしたことはない)
154:デフォルトの名無しさん
20/01/11 22:57:26.01 /PybViq/.net
>>149
WebサービスはWebの知識があればPythonとPythonのフレームワークで構築できます
155:デフォルトの名無しさん
20/01/11 23:10:13.39 mXX0vnIh.net
>>154
ありがとうございます!Webの知識もないプログラム初心者なのでHTML・CSSを学んでから、または学びつつPythonを勉強しようと思います!
156:デフォルトの名無しさん
20/01/11 23:16:15.67 cnAODivo.net
Webの知識にはHTML/CSSだでなく
HTTP, JavaScript(初級)/DOM, 各種ブラウザの開発ツール使い方
くらいは含まれてると思われる
サーバーサイドはパフォーマンス気にしなければPythonだけでほぼなんでもできるが
モバイルアプリやリッチなWebクライアントはPythonだけでは作れない
157:デフォルトの名無しさん
20/01/11 23:22:24.84 mXX0vnIh.net
>>156
私にはまだ早い領域のようですね…
教えて下さった言語含めもうちょっと調べてみます
ありがとうございます!
158:デフォルトの名無しさん
20/01/11 23:32:59.83 IeHCZeyd.net
>>153
やっぱそうなんだ
コンパイルしてるわけじゃないしな
159:デフォルトの名無しさん
20/01/12 01:21:03.35 PW2KE/yt.net
>>143-144
Ruby, selenium webdriver, headless モードで、38 Mbps
sleep 45 が無いと、すぐに、0 が取得されてしまう!
つまり、このdiv が、最初から存在していて、0になっているのだろう。
<div class="speed-results-container succeeded" id="speed-value">0</div>
理想的には、結果が出たときに現れる、要素を待つのが良い。
その方が、sleep で時間指定しないで済むから
require "selenium-webdriver"
options = Selenium::WebDriver::Chrome::Options.new
options.add_argument('--headless')
options.add_argument('--disable-gpu')
driver = Selenium::WebDriver.for :chrome, options: options
driver.manage.timeouts.implicit_wait = 60 # 要素の検索の timeout
driver.navigate.to "URLリンク(fast.com)
sleep 45
puts driver.find_element( :id, "speed-value" ).text
driver.quit
160:デフォルトの名無しさん
20/01/12 03:20:28.12 M8sF3s6B.net
>>159
capybara使えよ
implicit_wait=60とかsleep 45とかありえんてぃ
先週のWebDriverWaitを10回くらい繰り返してるクソコードよりもひどいぞ
>>143
fast.com cliでググれ
161:デフォルトの名無しさん
20/01/12 03:26:40.80 8P2rssJG.net
次のプロジェクトを何の言語でやるか、検討した結果PHP派とPython派に分かれた。
Rubyはみんな嫌がった。
162:デフォルトの名無しさん
20/01/12 03:27:02.71 aGAZplX2.net
>>143
ありがとうございます。
Python通ってないので参考になります。
>>159
>>160
cliあったんですね!
Macのcrontabだとスリープ時に実行できないので
サーバー化してるRaspberryでcrontab回そうと思います。
助かりました。
ありがとうございます。
163:デフォルトの名無しさん
20/01/12 10:35:42.78 eDYJZWaK.net
データフレームで
target shape
1 0
0 1
1 1
としたときtarget==shapeのデータをスライスとして取り出したいのですが、
同一データフレーム内のデータを比較してスライスするにはどうすれば良いのでしょう?
164:デフォルトの名無しさん
20/01/12 11:16:34.31 /bwylFW9.net
df[df[‘target’]==df[‘shape’]]
または
df.query(‘target==shape’)
165:デフォルトの名無しさん
20/01/12 12:31:28.08 eDYJZWaK.net
>>164
ありがとうございます。
Pandasのスライスの表記難しい・・・。
使いこなせる自身がないんですが、やってるうちになれてくるものなのか・・・。
166:デフォルトの名無しさん
20/01/12 12:34:18.40 eDYJZWaK.net
a=Fale, b=True
だけをスライスしたいのですが、
df_correct = df[df['a'] == False & (df['b']==True)]
とすると
a==False
の条件でスライスされ
b==True
が無視されます。
なぜなんでしょう?
167:デフォルトの名無しさん
20/01/12 12:35:45.17 eDYJZWaK.net
>>166
失礼しました。
自分の投稿みて気づきました。
前の条件を()でくくっていなかったですね。
orz
168:デフォルトの名無しさん
20/01/12 13:20:04.86 eDYJZWaK.net
>>164
queryなんてあったんですね
昔accessやってたものとしてはquery使ったほうが可読性高いな。
169:デフォルトの名無しさん
20/01/12 13:20:54.36 eDYJZWaK.net
>>164
python的には内包表記とqueryではどちらが推奨なんでしょうか?
170:デフォルトの名無しさん
20/01/12 13:48:50.66 AzrAZmp9.net
python 3 で16進数文字列をutf-8文字列に変えたいんですが、簡単な方法ないですか?
171:デフォルトの名無しさん
20/01/12 14:24:18.86 M8sF3s6B.net
>>170
>>111と同じなのか違うのか?
違うのなら簡単な方法じゃなくめんどくさい方法でどうやってるのかをまず書いて
172:デフォルトの名無しさん
20/01/12 15:47:52.03 iU1LDXiT.net
いつのまにかインデントが崩れて正常に動作しなくなってた
でも中括弧がないので元の状態が分からない
元に戻せない
173:デフォルトの名無しさん
20/01/12 19:12:52.42 N3Z2zUK8.net
import binascii
print('あ'.encode('utf-8'))
print(binascii.a2b_hex('e38182'))
print(binascii.a2b_hex('e38182').decode('utf-8'))
174:デフォルトの名無しさん
20/01/12 20:02:34.80 7XI25yF1.net
>>172
ワロタwwwwww
175:159
20/01/12 20:18:51.94 PW2KE/yt.net
>>160
<div class="speed-results-container succeeded" id="speed-value">0</div>
この要素は、sleep 45 が無いと、すぐに、0 が取得されてしまう!
つまり、このdiv が、最初から存在していて、0になっているのだろう
このサイトを1分ぐらい見てると、数値が動くだろ
たぶん、1分ぐらい掛けて、何回も非同期処理で、この値を書き換えている。
だから、1分近く待たないと、速度が安定しない
176:デフォルトの名無しさん
20/01/12 20:56:59.94 UO120eKA.net
お金を計算するわけでもないのですが
小数点の計算に全部decimalつけるの面倒なんですけど
何とかならないですか?
177:デフォルトの名無しさん
20/01/12 21:09:49.97 M8sF3s6B.net
>>175
「0 が取得されてしまう!」じゃねーよ
もうちょっと頭つかってくれ
速度が安定するまで待ちたいなら
「wait until 速度が安定?」みたいなコードを書けばいいだけだろ
測定完了を示す状態変化があるのに
わざわざ速度が安定したかどうかで判定する必要もないんだけどさ
178:159
20/01/12 21:32:01.79 PW2KE/yt.net
他人のサイトをデバッグ・解析して、測定完了を示す状態を見つけるとか、それは大変!
仕様書もないのに、できない。
そういう解析を仕事としては色々やってきたけど、面倒
179:デフォルトの名無しさん
20/01/12 21:59:15.48 LmjMg5d7.net
rubyくん
ID変え忘れてるよ
180:デフォルトの名無しさん
20/01/12 23:01:37.62 aXgbqZV+.net
こんにちは質問させてください。
20190112, A, 91
20190112, B, 82
20190111, A, 93
…
という感じで[日付,名前, 得点]の3カラムのデータがあり、各行の日付段階での、
その人の過去30日平均得点(人別の得点の移動平均)をできるだけ高速に計算したいのですが、
どのようにすればよいでしょうか?
なお、今はsqliteで、以下のような原始的なプログラムを書いてみましたが、遅くて困っております。
# date, nameの組み合わせを抜き出し
list = cur.execute('select date, name from table').fetchall
# listすべてにfor文で処理
for i in range(len(list)):
date = list[i][0]
name = list[i][1]
# dateから30日前の日付を計算
date30before (計算略)
# nameが一致しているそのデータから過去30日分のスコアを抜き出し
scoreList = cur.execute('select score from table where name == ? and ? < date < ?',(date30before, date)).fetchall
# 抜き出した30日分のスコアを平均
scoreListAve(計算略)
# 元のテーブルのdate, nameが一致する行に書き込み
cur.execute('update table set score30Ave = ? where date = ? and name == ?'),(scoreListAve, date, name))
con.commit() # for後、コミット
181:デフォルトの名無しさん
20/01/12 23:44:09.77 8exfRg1S.net
少なくともSELECT文はfor文で回す必要がないように見える
ウィンドウ関数とか使って、1回のSELECT文けで、その後のUPDATE文の条件として使いたいscoreListAve, date, nameを抽出出来るはず
182:180
20/01/12 23:53:05.86 aXgbqZV+.net
>181
ウインドウ関数を知らないので調べてみます。
ありがとうございます。
183:デフォルトの名無しさん
20/01/13 01:51:12 6QaMEdT1.net
where の条件に、日付・名前があって、
それらに索引インデックスが付いていないのなら、絞り込めず、全探索になるから!
例えば、100万レコードあれば、それらをすべて検索してから、チェックするから!
基本的には、検索条件に索引インデックスが付いていないものは、全探索になるから検索しない!
情報処理資格のデータベーススペシャリストの教科書で、
データベースの設計を勉強すべし!
184:180
20/01/13 02:43:19.89 wBE7Qmaa.net
>183
助言ありがとうございます。
書き忘れましたがname, dateのIndexはすでに作ってます。
cur.execute('create index dateIndex on table(date)')
Indexでだいぶましになったのですが、それでも現状、
forが100進むのに1秒くらいなので、20万レコードで30分くらいかかります。
185:デフォルトの名無しさん
20/01/13 04:48:03 nfiKoGl1.net
歯抜け無しならWindow関数で
歯抜け有りなら相関サブクエリで
― Window関数 ―
SELECT date, name, score, avg(score) OVER (
PARTITION BY name ORDER BY date ROWS BETWEEN 29 PRECEDING AND CURRENT ROW
) AS moving_avg
FROM score_table
ORDER BY name;
186:デフォルトの名無しさん
20/01/13 04:59:38 nfiKoGl1.net
相関サブクエリのほうはブロックされたからここに貼っとく
URLリンク(ideone.com)
187:180
20/01/13 05:49:10 wBE7Qmaa.net
>185
大変ありがとうございます。
歯抜け有りなので相関サブクエリの方をまず試してみます。
ここまで見本のコードを書いていただければ自分のレベルでも
なんとか取り入れられそうです。
188:デフォルトの名無しさん
20/01/13 09:52:19.26 kwqyPibM.net
>>187
歯抜けありでもwidow関数で書けるぞ。
相関サブクエリなんて過去の技術を使うな。
189:デフォルトの名無しさん
20/01/13 09:57:49.58 Co2mHaqk.net
>>180のコードでメモリが足りているならsqlをどうこうする必要はないと思うが。
190:デフォルトの名無しさん
20/01/13 10:30:58.73 BvowWoiX.net
1回のクエリで行けるところを、わざわざループでクエリ投げまくる意味はないでしょ
191:デフォルトの名無しさん
20/01/13 10:58:18.23 bfpXOE5X.net
クエリが苦手でPythoに慣れているなら意味はある
クエリは言語としては非常に特殊だからね
常用しない人にはとっつきづらい
192:デフォルトの名無しさん
20/01/13 10:59:15.38 Yl8Am7cI.net
SQLの書き方次第で100倍は効率良くなる事案
193:デフォルトの名無しさん
20/01/13 11:38:01.76 nlvLw0Pz.net
>>189
遅いから困ってるって明記されてるのにメモリーとか何言ってるんだよw
>>191
書捨てならそれでいいけどよく使うならSQLは覚えていて損はないと思うぞ
考え方に慣れればそれほど難しくないし
194:デフォルトの名無しさん
20/01/13 13:13:36.22 V22NtS8V.net
距離を計算したいのですが、
df['distance']=math.sqrt((df['x_distance']**2+df['y_distance']**2).values)
で
only size-1 arrays can be converted to Python scalars
となります。
DFを.valueつけてndarrayに変換してsqrt()に渡せばいいのかと思ったのですが・・・
お教えいただけると助かります
195:デフォルトの名無しさん
20/01/13 13:19:03.45 S1eVQBPA.net
valuesで取ってから二乗して和をとってしないと行けないんじゃないの
196:デフォルトの名無しさん
20/01/13 13:21:21.99 dQZR7cFx.net
URLリンク(pastebin.com)
このコメントアウトしているコードを実行するとエラーが出るのですが、何が悪いのでしょうか?
197:デフォルトの名無しさん
20/01/13 13:24:28.21 uorRSC+x.net
>>194
math.sqrtはpythonの標準関数でスカラーにしか対応していない
np.sqrtにすればたぶん動く
198:デフォルトの名無しさん
20/01/13 13:37:39.33 +xCO6TbN.net
>>196
formatなんて組み込み関数はない
199:デフォルトの名無しさん
20/01/13 13:41:07.13 DXn4EK/n.net
Python学びたいんだけどどっから手を付けていいかわからん。
取り敢えず、クジラ本 「実践力を身につける Pythonの教科書」(4839960240)は買ってきた。
200:デフォルトの名無しさん
20/01/13 13:44:12.30 V22NtS8V.net
>>197
できました。
ありがとうございます。
m(._.)m
201:デフォルトの名無しさん
20/01/13 14:08:01.51 IO5oYjrW.net
教えて下さい。
pythonのコードを友人に書いてもらったのですが標準のIDLEではRunModuleで
実行できるのにコマンドプロンプトで実行しようとしたら以下のエラーを吐きます。
python3.6.5
windows10
Traceback (most recent call last):
File "C:\Users\user\Desktop\201911_Project_\201911_Project_\sendMailLogic.py", line 19, in <module>
WebSiteList = dac.getWebSiteList()
File "C:\Users\user\Desktop\201911_Project_\201911_Project_\DAC.py", line 96, in getWebSiteList
for row in cur.execute(strSQL):
sqlite3.OperationalError: no such table: WebSite_List
よろしくお願いします。
202:デフォルトの名無しさん
20/01/13 14:16:44.85 6kghygIo.net
>>201
「WebSite_List」って名前のファイルが参照場所にない。
探せ。
あと拡張子とかついちゃってて名前がかわってないかもチェック。
203:デフォルトの名無しさん
20/01/13 15:42:49.08 V22NtS8V.net
2Dカードゲームでユーザの行動特性を調査する
研究用アプリを開発しようと思ってます
開発環境をPygameにするか、Unityにするかで悩み中
Unityのほうが色々ゲーム用の機能揃ってて見栄えの良いUI作れそうなんだけど、
ユーザの行動データを数値解析したり、将来的には機械学習も取り入れようかと思ってるので、
その点ではPythonのほうが親和性高そう
どちらが、おすすめとかありますか?
204:デフォルトの名無しさん
20/01/13 15:43:53.12 V22NtS8V.net
ちなみにUnity、c#のほうが少しは得意
Pythonは最近sklearnとか使い始めたくらいの超初心者です
205:デフォルトの名無しさん
20/01/13 15:51:01.10 tF3chcAw.net
それは
※ただし、選択できるプログラミング言語は一つだけとする
というような縛りプレイルールが暗黙的に存在すると考えていいのかしら?
でなかったら俺はゲームをUntiyで書いて機械学習をPythonでやるかな
206:デフォルトの名無しさん
20/01/13 15:52:19.18 ghAse/mn.net
親和性って書いてるだろ
207:デフォルトの名無しさん
20/01/13 15:54:55.78 tF3chcAw.net
だから、親和性を最優先にするならそれぞれ得意分野に使うのが最善に決まってるだろw
はぁーガイジは人間に進化するまでママと遊んでてくれないかね
208:デフォルトの名無しさん
20/01/13 15:58:12.59 ghAse/mn.net
それ親和性優先してねーじゃん
209:デフォルトの名無しさん
20/01/13 16:08:32.64 GhUCXbF0.net
>>208
何と何の親和性について語ってるの?
210:デフォルトの名無しさん
20/01/13 16:10:23.44 ghAse/mn.net
ゲームエンジンと機械学習エンジンの接続
211:デフォルトの名無しさん
20/01/13 17:01:18.46 IO5oYjrW.net
>>202
ありがとうございます。自分で見る限りは異常ないと思うのですが・・・
IDLEでRunModuleできるのにコマンドプロンプトでエラーがでるってことありますか?
212:デフォルトの名無しさん
20/01/13 17:03:03.66 6kghygIo.net
>>211
コマンドプロンプトのカレントディレクトリがIDLEのカレントディレクトリと違ってるんだろ
213:デフォルトの名無しさん
20/01/13 17:15:24.55 nfiKoGl1.net
>>203
それ前も聞いてたけど公開して広くデータを取得する可能性考えたらJavaScript一択だと思うぞ
それにカードゲームというのがいわゆるソシャゲ系で
アクションや派手なエフェクトを多用するやつならともかく
トランプ系の動きの少ないやつならHTML/CSS使ったほうがはるかに簡単
研究室にテスター呼んでやってもらうだけなら
自分が作りやすさだけ考えればいいんだろうけど
その場合でもデータ連携で十分なんだから
得意分野の違う言語を無理やり一つにする意味あんまりない
214:デフォルトの名無しさん
20/01/13 17:58:01.77 nfiKoGl1.net
>>184
書き忘れたが nameとdateにそれぞれindex張るんじゃなく
(name, date)のcomposite indexにしたほうが速くなるはず
julianday()を使えば歯抜け有りでもWindow関数でいけた
これ使う場合はindexも(name, julianday(date))に
PARTITION BY name ORDER BY julianday(date) RANGE BETWEEN 29 PRECEDING AND CURRENT ROW
215:デフォルトの名無しさん
20/01/13 18:01:34.92 V22NtS8V.net
>>213
ごめんなさい
今やってることの次の研究なので、定期的に頭の中に湧いてくるみたいです。
Unityで行こうと思ってたんだけど、Pythonで機械学習の初歩も学び始めたら、
Pythonでやったほうがいいのかまた悩みはじめました
前は
Unityカードゲーム
↓
データCSVで吐き出し
↓
Pythonで解析
と考えていたけど、カードゲーム中にもデータを機械学習させて、カードゲームの設定をいじるとかしたくなってきました。
そうするとPygameでやったほうがいいのかなと思うんだけど、Pygameの評判があまり良くないようなので、グルグル思案中・・・。
216:180
20/01/13 19:27:28.23 wBE7Qmaa.net
180ですが、教えてもらった相関サブクエリによるselectのやり方で
20万レコード30分くらいかかってたのが2分くらいまで短縮できました。
助かりました。
select後、sqlに保存は依然としてfor文ですが、それも込みで2分です。
保存部分もまとめて、
update table t1 set (select avg(score) …
というやり方ができないかと思って試しましたが、うまくできませんでした。
たぶん、最初にコメントされた方はそこもわかった上で
「少なくともselect文は」と言われたのでしょう。
ウインドウ関数、コンポジットインデックスも教えてくださりありがとうございます。
また試してみます。
217:デフォルトの名無しさん
20/01/13 19:42:53.29 Yl8Am7cI.net
>>216
出来ると思うんだが、内容がすでにPythonから離れているので
データベース板のSQL質疑応答スレで聞いてみると良いかも
218:180
20/01/13 20:25:11.89 wBE7Qmaa.net
>217
たしかに!
意識できていなかったのですが、ちょっとスレ違いでした。すみません。
みなさんクエリがなんとかとか言って争ってる?ので
5ちゃんねるは教えてくれる人々がいつもなんか争ってるなぁとw
219:デフォルトの名無しさん
20/01/13 20:49:48.38 6kghygIo.net
>>218
DBへのクエリの出し方はジッサイトテモダイジだ。
おなじことをしたいときでも
書き順によって
30分かかったり
2分くらいで終わったりだ。
イイネ?
220:デフォルトの名無しさん
20/01/13 21:20:28.09 nfiKoGl1.net
>>215
↓実装方法を選択する一般的な思考プロセスを経てないので目移りするんじゃないのかな
1. 自分が求める機能/非機能要求を整理する
2. 評価軸を決める
3. 実装方法の選択肢を考えられる限り出す
4. 選択肢のPros/Consを把握する
5. 評価軸とPros/Consからトレードオフを見極めて実装方法を選択する
UnityとかPyGameとか特定のソリューション名で考えずに
もう少し抽象度あげて選択肢を考えたほうがいいと思う
Pythonで全部やる、C#で全部やる、Python+C#のハイブリッドと大枠の選択肢があって
ハイブリッドの場合はファイル連携、DB連携、プロセス連携、API連携といろんなレベルがある
どれがいいかは上に書いた1や2が整理されてないと選びようがない
221:デフォルトの名無しさん
20/01/13 21:25:54.08 nwry0R0l.net
大袈裟だな。
222:デフォルトの名無しさん
20/01/13 21:52:26.47 FBCsPnZa.net
北海道のグラサンスーパーハゲザーはここにはこないのー?
223:デフォルトの名無しさん
20/01/13 22:10:39.12 P1+rByUv.net
>>211
WebSite_Listの読み込みやってるあたりで外部ファイル参照してない?
ファイル読み込みしてたら、ファイル名をフルパスにするか、 import osして
os.path.dirname(os.path.abspath(__file__)) + '/'+filenameにしてみたら(実行ファイルと同ディレクトリの場合)?
224:デフォルトの名無しさん
20/01/13 22:12:13.05 BvowWoiX.net
pathlibつかえ
225:デフォルトの名無しさん
20/01/14 10:02:51.83 RNgj0nXq.net
>>198 何言ってんだ、あるぞ
226:デフォルトの名無しさん
20/01/14 10:44:24.13 sNEc9p7V.net
>>215
Pythonが機械学習部分を担当し、Unityがゲーム部分を担当し、
両者が通信を行えば言ってるようなことはできる。
(そして正直それがおすすめ)
出来ないうちに色々こんな機能も欲しいって言って考えていくと、要求ばかり大きくなって
結局何も完成しないから、まずは最小限使えるものを作ってしまうべき。
最悪のケースでも、書いたコードは無駄となるかもしれないけど、
設計手法や要素技術は身に着くのだから別のプラットフォームに移植するのに始めのときより時間がかからなくなる。
227:デフォルトの名無しさん
20/01/14 13:35:18.55 Cb2SImdL.net
「くだすれ」ってなんですか?
228:デフォルトの名無しさん
20/01/14 13:59:52.47 6KmUa3mX.net
ここが起源っぽい
URLリンク(www.log soku.com)
229:デフォルトの名無しさん
20/01/14 14:01:21.23 n2n8mDAV.net
pythonでデータベース使うならどれが簡単?
230:デフォルトの名無しさん
20/01/14 14:10:20.88 Sh3SY+TQ.net
sqlite3
231:デフォルトの名無しさん
20/01/14 14:10:23.62 Cb2SImdL.net
>>228
なんでそんな略称にしようと思ったんだろうな
232:デフォルトの名無しさん
20/01/14 14:11:37.48 Sh3SY+TQ.net
くそスレ
くそが出そう半分出かかってるがトイレ遠くて困ってる
くだらないスレ
233:デフォルトの名無しさん
20/01/14 14:14:12.10 /8RfG7cV.net
>>229
お前が何がしたいのか次第だろう
Webアプリ作ろうとしてるんだったらいくらSQLiteの扱いが簡単とはいえ選択肢に入らないし、
データ分析なんかで大きなデータセットを扱うんだったらBigQueryになるかもしれない
234:デフォルトの名無しさん
20/01/14 14:16:57.58 NngjCG95.net
ポスグレをサイコPGで
235:デフォルトの名無しさん
20/01/14 14:18:33.49 PBX58Pvh.net
memcached
236:デフォルトの名無しさん
20/01/14 15:32:37.37 ryFU8X4N.net
>>229 sqlalchemy
237:デフォルトの名無しさん
20/01/14 20:03:55.62 V5Q3d6Dh.net
pandas関係です。
>>> train_df[['Embarked', 'Survived']].groupby('Embarked').mean()
Survived
Embarked
C 0.553571
Q 0.389610
S 0.336957
>>> train_df[['Embarked', 'Survived']].groupby('Embarked').count()
Survived
Embarked
C 168
Q 77
S 644
と2回メソッド実行が面倒です。
以下のようなDataFrameを得たいのですが、スマートな方法ありますか?
Mean Count
Embarked
C 0.553571 168
Q 0.389610 77
S 0.336957 644
238:デフォルトの名無しさん
20/01/14 20:12:28.50 V5Q3d6Dh.net
自決しました。aggを使うのですね。
239:デフォルトの名無しさん
20/01/14 20:19:00.39 3etKzhuc.net
自決したのか!!!
240:デフォルトの名無しさん
20/01/14 20:20:27.07 eL1p+DpS.net
>>238
命は大切にしろよ
241:デフォルトの名無しさん
20/01/14 21:48:30 sWWbL+aD.net
超初心者な質問で申し訳ないのですが
mの行列の縦の部分に行列Pを入れたいのですがどうしたらいいですか?
こんな感じにしたいのです
m=[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]
p=[5,6,7,8]
m[0][3]=p[0]
m[1][3]=p[1]
m[2][3]=p[2]
m[3][3]=p[3]
242:デフォルトの名無しさん
20/01/14 22:06:55.30 4urAtQVN.net
numpyが楽
import numpy as np
m=np.array(m)
p=np.array(p)
m[:,3]=p
243:デフォルトの名無しさん
20/01/14 22:19:54 Cb2SImdL.net
rubyでは
244:241
20/01/14 22:29:22 sWWbL+aD.net
>>242
ありがとうございます
p=[5,6,7]でmの縦より一個少なくて
ブロードキャストエラーって出てしまいます
これはどうしたらいいですか?
245:デフォルトの名無しさん
20/01/14 23:52:13.22 4urAtQVN.net
>>244
縦方向の範囲も決める
m[0:3,3]=p か m[1:4,3]=p
246:デフォルトの名無しさん
20/01/15 03:04:35 TeTRS4cT.net
sklearnで機械学習のモデルに使えるクラスの一覧取得したいんですけどできますか?