Python3関連のことを調べてみた2020年01月12日

Python3関連のことを調べてみた2020年01月12日

Pythonでpandasを試す

#Pythonでpandasを試す

Pythonたいがい便利だが、pandasを使いこなすと便利さ倍増のような
ホワイトカラーの生産性相当向上できそう
CSVやExcelなどを、あたかもRDBのように扱える
もちろん。それだけじゃないんだろうけど
簡単な例を作ってみた

###利用データ
[Python3でcsv処理あれこれテスト](qiita.com/code2545Light/items/a4addf9ea849a3e95793)
と同じくテストデータは、上場企業一覧のCSVを
カブサポさんより配布されているものを入手し、利用する。

上場銘柄一覧csvのダウンロード

###ソースコード

“`pandas_sample.py

#pandas sample

import pandas as pd

#上場企業リストcsvを、pandasで読み込み

#cmp_sheet = pd.read_csv(“stocklist.csv”,encoding=”utf-8-sig”, dtype=str) #キーを文字列に

元記事を表示

matplotlib.pyplot.subplots_adjustのparameterについて

[spa]:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.subplots_adjust.html
#matplotlib.pyplot.subplots_adjustの概要
Pythonの描画library [matplotlib.pyplot](https://matplotlib.org/api/_as_gen/matplotlib.pyplot.html#module-matplotlib.pyplot)には余白などを設定する[matplotlib.pyplot.subplots_adjust][spa]があります.

“`python:
matplotlib.pyplot.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None)
“`

[公式document][spa]から取ってきたものですが, parameterは以下のように0~1までの実数値を設定します.

“`python:
left

元記事を表示

QiitaAPIのOauthをDjangoで

#はじめに
QiitaAPIというQiitaを扱うのに便利なAPIがあります。
https://qiita.com/api/v2/docs

これをDjangoで使ってみるサンプルです。

Oauthのみをこの記事では取り扱います(それ以外は単純にリクエスト送るだけなので、、)

以下のURLからアプリケーションを登録します。
https://qiita.com/settings/applications

`Client ID`と`Client Secret`が手に入ります。

#認証周り
##GET /api/v2/oauth/authorize

ユーザーに対して認可画面を表示します。
ユーザーが認可すると、上記のアプリケーション登録で指定したCallbackURLに`code `が付与されます。

他に`scope`と`state`をパラメータで指定します。

スコープに関しては[こちら](https://qiita.com/api/v2/docs#%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%97)

stateはCSRF対策のためにリダイレクトするUR

元記事を表示

[Python3 入門 4日目] 3章 リスト、タプル、辞書、集合(3.2.7〜3.2.19)

## 3.2.7 append()による末尾への要素追加
リストに要素を追加するための方法として伝統的にappend()で末尾に一つずつ追加していく方法。

“`py
>>> marxes=[“TTTTTT”,”aaaa”,”bbbb”]
>>> marxes.append(“Zeppo”)
>>> marxes
[‘TTTTTT’, ‘aaaa’, ‘CCCC’, ‘Zeppo’]
“`

## 3.2.8 extend()または+=を使ったリストの結合
extend()を使えば二つの**リスト**を結合できる。

“`py

>>> marxes
[‘TTTTTT’, ‘aaaa’, ‘CCCC’, ‘Zeppo’]
>>> others=[“Gummo”,”Karl”]
>>> marxes.extend(others)
>>> marxes
[‘TTTTTT’, ‘aaaa’, ‘CCCC’, ‘Zeppo’, ‘Gummo’, ‘Karl’]
>>> marxes=[“TTTTTT”,’aaaa’, ‘CCCC’]
>>> others=[“Gummo”,”Karl”

元記事を表示

第六回ドワンゴからの挑戦状 予選をPythonで解きたかった

### はじめに
こんばんは。前回のABC150は残念ながらunratedになってしまったので、レートの変動はないです。そして、学校で模試があるのでなかなか時間が取れずに記事を書けませんでした。模試が終わったら終わったらたくさん書きます(フラグ)
**今回はAしか解けませんでした。**B以降は期待値が出てきて問題の意味が理解できなかった。

###A問題
[問題](https://atcoder.jp/contests/dwacon6th-prelims/tasks/dwacon6th_prelims_a)

**考えたこと**
問題を見ると複数行の標準入力が必要で、実装を知らなかったので検索。
とりあえず、曲名と時間で分割して別のリストにした。あとは、どこで寝てしまったを調べるだけ。

“`python
n = int(input())
s = []
for a in range(n):
s.append(input().split())
x = input()

m_l = []
for i in s:
m_l.append(i[0])

t = []
for j

元記事を表示

CloudWatch Logsのイベントを期間指定で取得する

# CloudWatch Logs
CloudWatchに保存されたログはAWSのコンソールで確認する事ができて便利ですが、ログを解析する場合にS3にエクスポートするなど一手間かかります。ログの解析には、私はPythonスクリプトで行う事が多いので、PythonスクリプトでCloudWatchからログを取得するスクリプトの作成を目指します。なお、以下のコードはpython3(3.7.5)で動作させています。

“`bash
$ python3 –version
Python 3.7.5
“`

# PythonでのCloudWatch Logsの取得方法
他のAWSの制御と同様でboto3を利用します。boto3が入っていない場合は、インストールをして下さい。

“`bash
$ pip3 install boto3
“`

boto3を利用するためには、AWSのIAMアカウントのアクセスキーとシークレットを利用する必要があります。そちらについては、aws configureで事前に設定しておいて下さい。設定されていれば、boto3が環境変数を読み取リますので、pythonス

元記事を表示

デコレーター1

“`python:1
def print_info(func):
def wrapper(*args, **kwargs):
print(‘start’)
result = func(*args, **kwargs)
print(‘end’)
return result
return wrapper

def sum(a, b):
return a + b

f = print_info(sum)
r = f(10, 20)
print(r)
“`

“`:1の実行結果
start
end
30
“`

print_info関数がデコレーターで、
sum関数をデコレートしている。

1の書き方だと分かりにくいので
以下の様に書いた方がわかりやすい。。。

またデコレーターは再利用できるので、
それを踏まえて。。。

“`python:2
def print_info(func):
def wrapper(*args, **kwargs):
print(‘start’

元記事を表示

エクストリームわんにゃんプログラミング

・コードを見ていると目が疲れる…
・コーディングが退屈…
・~~そもそもプログラミングがつまらない~~

###そう感じているそこのあなた!!

まずはこれを見てほしい
![ezgif.com-video-to-gif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/428437/622ff9bd-7c9d-9e09-4f58-8db8e10f7017.gif)

どうだろうか、
疲れを癒してくれるネコちゃんとコーギーくんが常に画面上部にいるだけでなく、
退屈さを吹き飛ばしてくれるようなエキサイティングな打鍵感が得られ、
さらにはコンボシステムによりコーディングが捗ってしまうではないか!

この体験を与えてくれるのはGoogle Colaboratoryだけ。
しかも、無料で。

早速試したいでしょう、やり方を教えます。

ただ、Google Colaboratoryの初め方や使い方については説明しないので注意してほしい。
有志が書いた他の記事を参照すると良いだろう。

##Google Colabora

元記事を表示

mysql-connector-pythonでMySQLに接続試行すると「SSL connection error: SSL_CTX_set_tmp_dh failed」エラーで接続できない

# はじめに
Pythonの「mysql-connector-python」ライブラリを使って、Dockerイメージから起動したMySQLサーバに接続を試みたところ、「**SSL connection error: SSL_CTX_set_tmp_dh failed**」エラーが発生し、MySQLに接続できない問題が発生しました。

“`python:test.py
import mysql.connector

conn = mysql.connector.connect(
host=’127.0.0.1′,
port=’3306′,
user=’user’,
password=’password’,
database=’sample_db’
)
cursor = conn.cursor()
“`
↓ 実行後

“`python:エラーメッセージ
Traceback (most recent call last):
File “/Users/user1/opt/anaconda3/lib/python3.7/site-package

元記事を表示

ケモインフォマティクスで学ぶPythonの反復処理

# はじめに

[ケモインフォマティクスで学ぶPythonの条件分岐](https://qiita.com/yukiya285/items/498f15061b80159ecf2e)に引き続き、リピドミクス(脂質の網羅解析)を題材として「条件分岐」について解説していきます。
ケモインフォマティクスの実践例を中心に説明していきますので、基本を確認したいという人は以下の記事を読んでからこの記事を読んでみてください。

[製薬企業研究者がPythonのデータ構造についてまとめてみた](https://qiita.com/yukiya285/items/1db03558c38f1405dbbb)

# for文

`for`は、あらかじめ決まった回数だけ反復処理を行うときに使えます。
`for 変数 in イテラブル(リストなど):`として、改行して半角スペース4つ分インデントして処理内容を記述します。

“`python
carbon_numbers = [16, 18, 20, 22, 24]

for Cn in carbon_numbers:
print(Cn, 0, se

元記事を表示

【n百番煎じ】LINE Notify APIをPythonで叩く

LINEは全員が使うチャットツールですから、これで通知を送れると非常に便利です。
LINE Notifyは無料で使える通知を送るAPIです。
この記事ではアクセストークン発行からPythonでAPIを叩くところまでやってみます。

#アクセストークンの発行

https://notify-bot.line.me/ja/

上のページにアクセスします。

スクリーンショット 2020-01-11 14.52.54.png

ログインからログインし、マイページをクリックします。

スクリーンショット 2020-01-11 15.24.56.png0で割ったエラー ZeroDivisionError の処理

“`py
print(‘start’)

try:
number1 = 200
number2 = 0
answer = number1 / number2
print(answer)
except ZeroDivisionError as e:
print(e)

finally:
print(‘end’)
“`

“`:実行結果
start
division by zero
end
“`

tryブロック内で例外が発生すると、
変数eに例外をあらわすオブジェクトが代入される。

tryブロック内で例外が発生した場合、
そこで処理を中断し、
exceptブロックのコードを実行する。

例外処理の後に、
必ず実行したいコードは、
finallyブロックに記述する。

元記事を表示

pycharm+beautifulsoupでModuleNotFoundError

# 今回の結論|pycharmのインタプリタ設定からパッケージインストールで解決
pycharmのインタプリタ設定の確認。
preferences → Project → project interpreter

ここで画像下のプラスボタンからパッケージをインストールしたら
pycharm内のプロジェクトから読み込め、実行できるようになりました。

注意:pycharmプロジェクトごとにこのpythonエンジン、パッケージは設定できるため
   他のプロジェクトでは再度設定する必要がある場合もある。

# 状況
スクレイピングをやる前にDjangoの本を進めていたり
pythonのテストをしたりといくつかよくわからないままに
仮想環境ができている状態でさらにpycharmを導入したばかり。

beautifulsoupというスクレイピングのライブラリを使おうとしたら
ModuleNotFoundErrorがでた。
何段階かでハマったのでメモしております。

# pycharmでどのpythonを使っているのかを確認
まずは大前提としてpythonのエンジン
python2.7とかpyt

元記事を表示

iTerm2で会社の株価を表示するコンポーネント作ってみた

## 何を作ったか

iTerm2でコンソール上にステータスバーを表示することができるようになりました???
また、独自に作成したコンポーネント (スクリプト)も登録・利用できるようになりせっかくなのでなにか作ってみようと思い今回作成しました。

スクリーンショット 2020-01-11 13.01.59.png

(※会社はてきとうに選びました)

## どうやって作るか

iTerm2のコンポーネントの作り方は他の記事を参照してください!

大変参考にさせていただきました→ [【iTerm2】ステータスバーのコンポーネントを自作してみた](https://dev.classmethod.jp/server-side/python/iterm2_create_statusbar_component_use_pyth

元記事を表示

PythonのスクレイピングでQiitaのトレンドを取得してみる

#はじめに
以下の記事を参考にさせていただきました。

[Python Webスクレイピング 実践入門](https://qiita.com/Azunyan1111/items/9b3d16428d2bcc7c9406)
[BeautifulSoup4のチートシート(セレクターなど)](https://python.civic-apps.com/beautifulsoup4-selector/)

今回目標とするデータはQiitaのトップページに乗っているトレンドです。

![スクリーンショット 2020-01-11 0.48.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/417600/122759ef-240c-4b58-a309-6b1f61e73a1f.png)

このように
`

`
と言う形でトレンドのJSONデータが存在しているので、それの取得を目標にします。

#実装

元記事を表示

Selenium(Python)で複数サイトを自動ブラウジングするツール作った

#はじめに
ブラウジングしたいURLが書かれたテキストファイルを受け取り、自動でブラウジングしてくれるツールを作成しました。
こだわった点は[youtube](https://www.youtube.com/)や[yahoo](https://www.yahoo.co.jp/)など、**スクロールするにつれてコンテンツが増えるページにも対応した点**です。
参考になれば幸いです。

# コード
“`py:AutoBrowsing.py
import os
import re
import sys
import time
import chromedriver_binary
import requests
from selenium import webdriver

# *** main関数(実行は最下部) ***
def main():
# URL一覧ファイルの受付
input_path = input_urls_file()
# URLリストをファイルから取得
url_list = get_url_list(input_path)
# UR

元記事を表示

[Python3 入門 4日目] 3章 リスト、タプル、辞書、集合(3.1〜3.2.6)

# 3.1 リストとタプル
pythonには文字列以外に**タプル**と**リスト**の2種類のシーケンス構造があり、0個以上の要素を持つことができる。文字列との違いは要素は型が異なっても良い。
###タプルの特徴
タプルはイミュータブルであり、要素を代入すると、それは焼き固められたように書き換えられなくなる。
###リストの特徴
ミュータブルであり、要素の削除と挿入ができる。

# 3.2 リスト
リストは要素を順番に管理したい時、特に順序と内容が変わる場合がある時に向いている。文字列とは異なり、リストはミュータブルのため直接変更できる。

## 3.2.1 []またはlist()による作成
リストは0個以上の要素をそれぞれカンマで区切り、全体を角かっこで囲む。

“`py
>>> empty_list = []
>>> weekdays=[‘Monday’,’Tuesday’,’Wednsday’,’Thursday’,’Friday’]
>>> another_empty_list=list()#list()関数で空リスト[]が作成できる。
>>> another_empty

元記事を表示

Python3で業務的なデータはDecimalで

#Python3で業務的なデータはDecimalで

プログラマ初心者の頃を思い出す、初歩的ミスをしたので
基本中の基本的なことですが反省を込めて投稿を

###パーセントの変換

こんなソースで

“`ng.py
#パーセント変換
#99.999 % をfloatに変換する。
def convert_per(gttper:str)->float:
m = re.match(r”[0-9]*.[0-9][0-9][0-9]”, gttper)
ret_vees_per = float(m.group(0))/100
#print (ret_vees_per)
#print (type(ret_vees_per))
return ret_vees_per
“`

これで

“`call.py
print(convert_per(“2.200 %”))
“`

ってやると
0.022000000000000002
になっちゃう

あれれ?
そうです。
コンピュータ内部は、2進数で管理しているから、10進数を扱うと微妙な誤差が出てしまうのです

元記事を表示

Pythonで一度に、安全に、非破壊的に、複数辞書の結合と複数要素の追加を行う

# やりたいこと

– 複数の辞書を結合して1つの辞書にしたい
– ついでに他にも要素を追加したい

“`python
dictA = {‘A1’: 1, ‘A2’: 1}
dictB = {‘B1’: 1, ‘B2’: 1}
# —(辞書の結合 & 要素の追加)—
# => {‘key1’: 1, ‘key2’: 1, ‘A1’: 1, ‘A2’: 1, ‘B1’: 1, ‘B2’: 1}
“`
さらに、

– 非破壊的に (元の辞書に変更を加えずに) 処理したい
– valueの変更をしない (keyが重複していたらエラーになってほしい)

これらを実現するための効率の良い書き方を紹介したいと思います。
# 良くない書き方

これは、“`.update()“`と辞書の追加記法を使えば一部実現可能です。

“`python
dictA.update(dictB)
dictA[‘key1’] = 1
dictA[‘key2’] = 1
new_dict = dictA
print(new_dict)
# => {‘A1’: 1, ‘A2’: 1, ‘B1’: 1,

元記事を表示

クロージャー 関数に引数を入れて後で実行したい場合

“`py:
def outer(a, b):

def inner():
return a + b

return inner# inner関数を呼び出すのではなくオブジェクトを返す

f = outer(1,3)
print(f)
print(f())
“`

“`:実行結果
.inner at 0x7**c3dfa*****>
4
“`
print(f)では
innerオブジェクトの情報が返ってきて、
a + bは実行されていない。

f()とするとinnnerが実行される。

元記事を表示

OTHERカテゴリの最新記事