Pythonのお勉強 Part58

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/10/25(木) 20:50:10.29ID:NRPlmaaN
★当スレにRubyのコードを書くことを禁ず

Pythonオフィシャルサイト
http://www.python.org/

■前スレ
Pythonのお勉強 Part57
http://mevius.5ch.net/test/read.cgi/tech/1529888279/

◆関連スレ
くだすれPython(超初心者用) その39
http://mevius.5ch.net/test/read.cgi/tech/1535064635/

◆まとめwiki
ttp://python.rdy.jp/

◆ソースコードをそのまま5ちゃんにコピペするとインデントが崩れるので
  こういうところ↓にはってきてください
ttp://ideone.com/      Pythonするにはぷち手間あるのがめんどうかなぁ
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。このスレ的には消えるまでの日数を長めに指定のこと。
ttps://jupyter.org/try    (旧try.jupyter.org)ちょっとめんどうそう
ttps://ja.osdn.net/pastebin/ ログイン必須になりやがった(゚Д゚#)


次スレは>>980が挑戦する
92デフォルトの名無しさん
垢版 |
2018/11/22(木) 20:58:25.97ID:HONMAAM4
>>91
それ聞いてどおするつもりやw質問の仕方間違っとるわw
意味ないなら何の問題もないし
意味あるならその意味を知りたいんやないかおまえw
2018/11/22(木) 21:54:51.59ID:y+g4Mzp9
>>91
(ctypes.c_double)の括弧でしょ? 明らかに余分で意味無いから無くてもいいよね
あと>>92はカイジすぎて何言ってるか意味分かんないよねw
94デフォルトの名無しさん
垢版 |
2018/11/22(木) 23:06:53.04ID:HONMAAM4
どおも〜カイジでぇす!
2018/11/23(金) 07:01:34.35ID:2HLR+v64
ざわ
96デフォルトの名無しさん
垢版 |
2018/11/23(金) 10:42:08.19ID:RHFoujTa
一瞬、LISPコードに見えた!
2018/11/23(金) 17:59:46.31ID:qZBUrC4R
pandasのdataframeを散布図でプロットするときに横軸を時刻、縦軸を実数でプロットしたいです。
時刻をdatetime型のままにしているとエラーが出ます。
unixtimeに変換すれば解決しますが軸の目盛りがただの数値になってしまい読みにくくなってしまいます。
どのように解決できますか?
2018/11/23(金) 18:12:43.71ID:cGOad0jL
>>97
Index.format() メソッドで時刻を文字列型にかえる
2018/11/23(金) 18:16:22.29ID:cGOad0jL
あるいは
pandas.DataFrameのインデックスをDatetimeIndexにしておく
2018/11/23(金) 18:43:58.56ID:qZBUrC4R
>>98
すみません、具体的な方法が分からないのでご教授願います。
Dataframeはこのような構造です。

https://i.imgur.com/SkRvPQ2.jpg
2018/11/23(金) 19:22:46.77ID:cGOad0jL
>>100
時刻、秒数まで欲しいんか?
年数も全部いるんか?
2018/11/23(金) 19:24:48.43ID:qZBUrC4R
>>101
月と日と時間と分があればいいです。
2018/11/23(金) 19:27:04.94ID:cGOad0jL
まあいいや
>>99のほうの方法でいくぞ

df['time'] = pd.to_datetime(df['time'])
df.set_index('time', inplace=True)
2018/11/23(金) 19:33:40.16ID:cGOad0jL
できたグラフのx軸から年を消すのは
axes[1].get_xaxis().set_major_formatter(mdates.DateFormatter(“%m-%d %H:%M”))
でたぶんいけるとおもう
[]の中の1が0かもしんないけど。
2018/11/23(金) 19:33:42.67ID:qZBUrC4R
>>103
どうすれば散布図にできますか?
x軸の引数がわかりません
2018/11/23(金) 19:36:40.86ID:cGOad0jL
たとえばtempと時間で散布図するなら
df.plot.scatter(y='temp')
2018/11/23(金) 19:37:24.41ID:cGOad0jL
(x軸に使うのがDataFrameのIndexである場合、xの指定は省略可能)
2018/11/23(金) 19:44:25.81ID:qZBUrC4R
>>107
こうなってしまいます。

https://i.imgur.com/M1uRUCL.png
2018/11/23(金) 19:48:30.53ID:cGOad0jL
じゃあ
df.plot(x='time', y='temp', kind='scatter')
2018/11/23(金) 19:51:48.90ID:qZBUrC4R
>>109
横軸がエラーとなってしまいます。

https://i.imgur.com/wvGU1Xn.png
https://i.imgur.com/OlYz6HL.png
111デフォルトの名無しさん
垢版 |
2018/11/23(金) 19:53:21.83ID:oESjsyiL
dat0 = np.arange(366)
dat1 = np.array((np.arange(366), np.arange(366)))
dat2 = np.arange(3600)
dat3 = np.array((np.arange(3600), np.arange(3600)))

p00 = pd.Series(dat0, index=pd.date_range('2018-11-22', periods=366))
p01 = pd.DataFrame(dat1.T, index=pd.date_range('2018-11-22', periods=366), columns=['hoge', 'fuga'])

p10 = pd.Series(dat2, index=pd.timedelta_range(0, periods=3600))
p11 = pd.DataFrame(dat3.T, index=pd.timedelta_range(0, periods=3600), columns=['hoge', 'fuga'])

fig = plt.figure()
axes = [fig.add_subplot(411 + _) for _ in range(4)]
p00.cumsum().plot(ax=axes[0])
p01.plot(ax=axes[1])
p10.cumsum().plot(ax=axes[2])
p11.plot(ax=axes[3])

plt.show()
2018/11/23(金) 19:55:56.44ID:cGOad0jL
>>110
pandasのバージョンが0.17より古いということはないか
2018/11/23(金) 20:11:32.26ID:cGOad0jL
あっ

>>103にまちがい

×df.set_index('time', inplace=True)
◎df.set_index('time')
2018/11/23(金) 20:34:55.12ID:qZBUrC4R
>>112
0.19.2でした。
>>113
かわりませんでした。
>>111
pandasがいいです
2018/11/23(金) 20:48:51.55ID:qZBUrC4R
エクセルのようにマーカーを線で結ぶ方法もわかりません。
2018/11/23(金) 20:56:17.33ID:cGOad0jL
>>114
(ー'`ー;)うーん
df.plot(kind='scatter', x=df.columns[0], y=df.columns[1])
でどうよ

>>115
普通のグラフと散布図の重ね書きが必要かも?

ax1 = df.plot()
df.plot(kind='scatter', ax=ax1, secondary_y=True)
2018/11/23(金) 21:14:37.81ID:qZBUrC4R
できませんでした。
2018/11/23(金) 21:16:32.23ID:cGOad0jL
もはや俺には手に負えない。。。
誰かもっと詳しい人をまってくれ
すまんな
2018/11/23(金) 21:21:33.46ID:qZBUrC4R
>>111
よくみたらpandasでした
すみません
120デフォルトの名無しさん
垢版 |
2018/11/23(金) 21:50:35.85ID:D1/wh0yl
‘/home/hoge/foo/*.txt’ みたいなパスが与えられてglobしたい時って、pathlibだと一度切り分けて
Path(‘/home/hoge/foo’).glob(‘*.txt’)
とするしか無い?
glob.globなら最初のパスを丸ごと与えて終わるけど
2018/11/23(金) 22:04:21.17ID:xRMo6/oI
マルチすんなチンカス
122デフォルトの名無しさん
垢版 |
2018/11/24(土) 00:26:19.74ID:MKfv0UvY
そんな事言ってもしマンカスやったらどうするつもりや?
このご時世やから秒でセクハラで訴えられるでおまえ
2018/11/24(土) 01:06:03.02ID:dSfTZsQB
のどチンカスならどっちでもセーフだからへーきへーき
2018/11/24(土) 01:49:02.59ID:01jBobXF
>>120
5ch は、マルチポスト禁止!

同じ質問を、2つ以上のスレに書き込むのは禁止!
2018/11/24(土) 14:01:54.72ID:S/+07wK4
>>117
できたぞ!

import pandas as pd
import matplotlib.pyplot as plt

df['time'] = pd.to_datetime(df['time'])
df = df.set_index('time')

plt.scatter(df.index, df['temp'])

plt.show()


>>115についてはこれから調べる
2018/11/24(土) 14:06:50.41ID:S/+07wK4
>>115
できたぞ!

plt.plot(df.index, df['temp'], marker=".")

#他のマーカーのカタチについては↓参照
#https://matplotlib.org/api/markers_api.html#module-matplotlib.markers
2018/11/24(土) 14:08:58.96ID:S/+07wK4
※pandasの.plot()を使う方法はなんかどーしてもうまくいかんかった (´・ω・`)
128デフォルトの名無しさん
垢版 |
2018/11/24(土) 15:05:41.49ID:4kdGLnPd
>>126
marker=(5, 1, 36) みたいな描き方出来るんだな勉強になった thx!
129デフォルトの名無しさん
垢版 |
2018/11/24(土) 16:36:05.20ID:lQDFRZSW
>>126
できまじた!
2018/11/24(土) 17:33:02.92ID:S/+07wK4
☆。・:*:・゚ ネ兄 ,。・:*:・゚☆
2018/11/25(日) 13:35:07.53ID:fZu9KGiT
プログラミングに関してはhtmlすら全く分からない超初心者です
http://storia.takeshobo.co.jp/manga/koizumi/_files/01/data/0001.jpg
の様にパズル化された画像を
http://storia.takeshobo.co.jp/manga/koizumi/_files/01/data/0001.ptimg.json
の記述にしたがって64分割された画像を入れ替えてパズルを完成させる方法を探していたら
https://pastebin.com/M7sUy6JC
が見つかった為、Pythonをインストールしたのですが意味が分かりません

Python 2.7.15
numpy (1.15.4)
Pillow (5.3.0)
pip (9.0.3)
setuptools (39.0.1)

PIL(Pillow)は入れました
保存したpy(_u_nscramble_manga.py)をコマンドプロントにぶっ込んだら
「line 1」「SyntaxError: invalid syntax」が出たので
1行目が無効と判断し、1〜15行目まで削除し16行目の#! /usr/bin/env pythonから始めました

すると
usage: _u_nscramble_manga.py [-h] image_path json_path output_path
_u_nscramble_manga.py: error: too few arguments
と言われました
そもそもURLの指定やjson、保存先の指定箇所が全く分かりません・・・
image_pathのところをhttp://storia.takeshobo.co.jp/manga/koizumi/_files/01/data/0001.jpgに書き換えたりしましたが違うみたいです

このスクリプトはどうやって実行するのでしょうか?
132デフォルトの名無しさん
垢版 |
2018/11/25(日) 14:11:24.57ID:rkqtyTFb
>>131
コマンドラインで引数を与える
python 〜.py -h
を実行すればヘルプが出るはず
2018/11/25(日) 15:30:15.57ID:fZu9KGiT
>>132
「コマンドラインで引数を与える」とはどう言う事でしょうか?
以下のURL
http://motw.mods.jp/Python/argument.html
を参照してバカなりに解釈した結果が以下です
https://dotup.org/uploda/dotup.org1700856.jpg

ERROR: Image file not found, check your path.
と出て怒られました・・・
意味が分かりません (´;ω;`)
2018/11/25(日) 15:49:56.58ID:H967y0wv
これって、竹書房がしょぼいなりにスクランブルかけてるのを解除するスクリプト見つけたから
スクリプトの使い方教えてっていう質問なので触らないほうがいいよ
135131
垢版 |
2018/11/25(日) 16:16:10.37ID:fZu9KGiT
ご迷惑をお掛けしました
>>134が仰る事はスレ的には正論と思いましたので以後、回答は不要です
グレーなスクリプトな為、自己解決出来ないなら使うべきではありませんね

以上、失礼致しました
2018/11/25(日) 17:54:38.18ID:mORjFRT1
竹ショボ〜ン
2018/11/25(日) 18:21:40.46ID:sFkUcxz4
だれうま
138デフォルトの名無しさん
垢版 |
2018/11/25(日) 18:28:44.16ID:arFqKMW0
ケケしょっぼ
2018/11/26(月) 02:33:56.21ID:nvtZwlw2
暗号を使っている人は、解除されたくなくて使っているから、
暗号を解除すれば、確信犯として逮捕されるよ

そのツールを作った者も、犯罪ほう助で逮捕されるかも
2018/11/30(金) 10:55:51.18ID:4Z2+gr8s
Pythonで機械学習とビッグデータの勉強を独学で2年ほど続けたあと、職務経歴を捏造して、機械学習の業務経験有りで売り込んでみろ
ジャップに機械学習の専門家なんて二桁もいないからまじで引く手あまた
年収2000万は最低限貰える
141デフォルトの名無しさん
垢版 |
2018/11/30(金) 11:52:17.76ID:fsxSc9K/
>>140
独学でも二年つったらたいしたもんだぞ
2018/11/30(金) 12:09:55.06ID:Eqzy0E1o
無名企業からでもそんなにいけるのか?
2018/12/03(月) 20:23:19.14ID:vk8lh6jD
python初心者です。
回答お願いします。

for i in range(100):
for u range(100):
if: <--@
pass
break
else: <--A
pass
break
else:
continue
break


@では内側のループだけbreak
Aでは内側と外側のループをbreakするにはどうすればいいですか?
2018/12/03(月) 20:27:06.92ID:vk8lh6jD
インデントが消えてしまった

for i in range(100):
. for u range(100):
. if: <--@
. pass
. break
. else: <--A
. pass
. break
. else:
. continue
. break

大変でしょうからやっぱりいいです。
145デフォルトの名無しさん
垢版 |
2018/12/03(月) 20:36:38.36ID:EaJkaXpw
>>143
フラグ変数を使う
outer_break = False
for i in range(100):
for u in range(100):
if @:
break
else: #A
outer_break=True
break
if outer_break:
break
146デフォルトの名無しさん
垢版 |
2018/12/03(月) 20:39:48.58ID:EaJkaXpw
>>143
あるいはtry-exceptを使う
class BreakOuter(Exception):
pass

try:
for i in range(100):
for u in range(100):
if @:
break
else:
raise BreakOuter
except BreakOuter:
pass
2018/12/03(月) 22:00:13.70ID:vk8lh6jD
>>145,146
ありがとうございます
どちらも期待通りの結果が出ました!

どうやってググったらいいのかもさっぱりわからず困ってました
ありがとうございます!
2018/12/04(火) 06:08:35.38ID:qgvunLXb
>>147
次からは書き込む前に>>1を読もう
>◆ソースコードをそのまま5ちゃんにコピペするとインデントが崩れるので
>  こういうところ↓にはってきてください
2018/12/04(火) 06:25:10.39ID:561Ocxn4
このスレの>>1をちゃんと読んだことなかったな
ソースコードをサイトに投稿したらPEP8を読めと言われた気分
150デフォルトの名無しさん
垢版 |
2018/12/04(火) 09:58:46.06ID:EY9iunDI
ビューワーで見ると崩れないから問題ないと思ってた
2018/12/04(火) 11:29:26.34ID:7fZ7TABA
インデントを全角スペースにしておけば問題無いじゃん
わざわざリンク先なんて見ないよ
2018/12/04(火) 11:53:53.74ID:A9zZCro2
リンクしか貼ってなければ読まないけど、質問がしっかりと書かれていて
リンク貼ってあればちゃんと確認するよ
確認しないで答える人を弾けるという点でも、リンク先使うのはいいんじゃないかな
2018/12/04(火) 12:49:55.61ID:eKuwOju4
raise って、例外処理機構か?

Ruby では、ネストしたループから、一気に抜け出す、
catch, throw という構文があるけど、

Python には無いのか?
2018/12/04(火) 13:42:04.28ID:PaGiVTh9
発売されますた
https://twitter.com/CASIOJapan/status/1069761266040750080
https://twitter.com/5chan_nel (5ch newer account)
155デフォルトの名無しさん
垢版 |
2018/12/04(火) 16:51:12.82ID:sXsP4O66
>>catch, throw という構文があるけど、

東大版LISPにも存在してた。懐かしいな
2018/12/04(火) 17:18:15.77ID:tZo4U3wG
>>153
知る限り綺麗なのは無いですね。
フラグを使うか、中のループを関数化して
戻り値でbreakするって言う
旧態然としたロジックを使ってます
2018/12/04(火) 17:20:54.42ID:tZo4U3wG
>>153
そうです。例外処理機構です。
だから、ループを抜けるために使うのは
本当は駄目でしょうね。
教えた人はわかってて書いてると思いますが
2018/12/04(火) 17:34:34.89ID:MA/iyfZ3
多重ループを抜けて即終了の関数で多重break処理の代わりにreturnでいいかと思ったことはある
そもそもreturnは関数の最後に1回だけみたいに勝手に型にはめて書いてたから思いつかなかった
その後そんな場面に遭遇してないのでやったことははないw
2018/12/04(火) 17:49:29.96ID:qgvunLXb
>>158
途中でreturnはジッサイ便利
2018/12/04(火) 18:27:15.99ID:MA/iyfZ3
>>159
そういう目的で多用するととんでもないものができそうだけど
breakすら技量不足みたいな人間が見たら卒倒するようなw
2018/12/04(火) 19:31:19.54ID:qgvunLXb
>>160
うん
多用は禁物
2018/12/05(水) 05:47:31.36ID:oxGlJnmc
深いループを抜ける処理を書く必要があるときに、その部分だけメソッドの外に出してreturnで済ますことはたまによくある
2018/12/05(水) 07:47:33.33ID:U0xNOyp+
そこでgotoですよ
2018/12/05(水) 08:59:30.48ID:2zrT35AA
リーヌス・トーバルズさんはLinuxカーネルでgoto使いまくりんぐwwwです。
2018/12/05(水) 09:08:35.47ID:9LXb4nZY
Cだとなんか許せる
2018/12/05(水) 09:29:37.25ID:sYveP2hw
pythonは諦めろ
2018/12/05(水) 10:22:44.38ID:RWjY2KY8
PHPだとbreak 2で2つ分ループ抜けられるね。
gotoよりは構造的だと思うけど、採用している言語は少ないね。
168デフォルトの名無しさん
垢版 |
2018/12/05(水) 16:52:15.42ID:mibG/iOQ
ベタだけど二重ループなら、それぞれの条件満たしちゃえば?
169デフォルトの名無しさん
垢版 |
2018/12/05(水) 17:16:42.34ID:oxGlJnmc
>>168
whileループならそれも場合によっては簡単にできるけど
for i in range() だとそれはできない
170デフォルトの名無しさん
垢版 |
2018/12/05(水) 17:25:30.95ID:kX9gokKe
iteration stop exception 出せ
2018/12/05(水) 17:53:39.30ID:XBoqgBKa
例外警察によると劣化gotoらしいし
2018/12/05(水) 18:25:37.39ID:ia6HrgTH
>>167
PowerShell はループにラベルをつけて break ラベル名 でそのレベルまで抜けられる
L1: foreach( ){
foreach( ){
if( ){
break L1
}
}
}
構文的にはこれが一番わかりやすいと思う
2018/12/05(水) 18:35:42.49ID:XBoqgBKa
javaのパクリじゃん。
174デフォルトの名無しさん
垢版 |
2018/12/05(水) 18:54:04.85ID:xYhP2Ga4
パクリパクリって最古の言語Fortranにあるじゃん…
そもそもコード中の好きなところ全てにラベル付けられるけども

Pythonにも入んないかな
インデントは好きだけど多次元配列とか深くならざるを得ない時はラベル付いてると見易いと思う、
コードブロックアノテーション便利、丁度:使うのもおんなじだしPythonにも希望

row: do〜
  col: do〜
   …
   if〜
    ! スキップ
    cycle row
    ! 出たいなら
    exit row
   endif
  enddo col
enddo row

とか
175デフォルトの名無しさん
垢版 |
2018/12/05(水) 19:01:44.84ID:xYhP2Ga4
別にgotoが何でも悪いわけじゃない、普通に使わない人が悪いだけ
breakもcontinueもtry/exceptもgotoの機能制限版だ
コード中で目の届く範囲に飛んで、ちゃんとアノテーションされたgotoは、これらと何の差も無い
2018/12/05(水) 19:02:17.64ID:jWFcc5b0
ぜひここで提案してきてくれ
https://mail.python.org/mailman/listinfo/python-ideas
177デフォルトの名無しさん
垢版 |
2018/12/05(水) 19:11:03.90ID:xYhP2Ga4
PEPって道場破りでもええんかな…?
いやスレチだぞってことかすまん

書きかけたんで蛇足許して
gotoと言われると可読性がーと言われるが、
少なくとも正しく使う限りにおいてcontinue/breakよりcycle/exit RowLoopのが可読性が高いのは確か
178デフォルトの名無しさん
垢版 |
2018/12/05(水) 19:22:33.86ID:kX9gokKe
初見さんお断り
179デフォルトの名無しさん
垢版 |
2018/12/05(水) 19:24:36.50ID:xYhP2Ga4
失礼しました

やっぱ関数にくるんでreturnが綺麗と思うな
本来はくるまない所だから、論理的には今のスコープ内に置くべき事が多いと思う、
インデントが深くなるので呼び出し元と同レベルに置くのも利はある
2018/12/05(水) 19:35:15.89ID:kZbaQiOU
テレテレッテテェーー >>179はレベルアップしました
181デフォルトの名無しさん
垢版 |
2018/12/06(木) 12:18:47.66ID:gL69SzmY
おまえらのその表記方法に対する謎の情熱はどこから湧いてくるんや?
ルビパーしかおらんのかここ?
2018/12/06(木) 12:40:09.68ID:rq0vzYZs
言われてchmateに画像アップロード機能あるの知って見てみたら簡単すぎ便利すぎワロタwwwww
2018/12/06(木) 13:34:12.41ID:73c4afIK
オレたち表記ん族ってね
2018/12/06(木) 16:06:47.68ID:2RW7L0ye
せっかくインデント強制なんだから、exitしたいループはインデントの位置で指定できるようにすればいいのにね
2018/12/06(木) 16:14:28.27ID:z6DmJ1sW
>>184がヾ(´・∀・`)ノ イイこといった
2018/12/06(木) 16:15:08.76ID:z6DmJ1sW
>>183はざぶとん没収な
187デフォルトの名無しさん
垢版 |
2018/12/06(木) 17:23:30.97ID:wDH9R6ta
超超初心者でふ
戻り値の所でつまずいてます。。
戻り値の概念を教えて頂けないかしら。。。
188デフォルトの名無しさん
垢版 |
2018/12/06(木) 17:25:45.76ID:ZtWhQkAF
何を教材に勉強してるんだよ
2018/12/06(木) 17:52:20.94ID:ZX4dNNbW
とりあえず「python 戻り値 基礎」とかでgoogle先生に聞けw
2018/12/06(木) 18:26:13.81ID:p2uPkaBO
関数呼び出したら、呼び出し元に返す値。関数内で処理された値を別の目的で使うために値を戻して利用する。何も返さない(返す必要がない)場合はNoneを返す。
2018/12/06(木) 18:32:19.17ID:rq0vzYZs
引数 → 関数 → 戻り値
お金 → 自販機 → しるこ缶
呼び出すときpythonだとこう書く
jihanki(120)
しるこ缶が出てくるけど変数に入れるなり…
orenotenohira = jihanki(120)
また他の関数の引数として使ったり…
bunnageru(jihanki(120))
しないと地面を転がってってどっか行くから注意な。

戻り値なしの関数や…
orenosaihu = akuyuu(10000)
※orenosaihuはNone
引数なしの関数も…
orenosaihu = shinyuu()
※orenosaihuは100000
あるから注意な。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況