- 1. 【Python 初心者メモ】python の文字列、パス操作
- 2. ディープラーニング協会G検定の勉強方法(初心者向け)【2020年版】
- 3. 正規表現_学習ノート_000_一覧
- 4. 苦しみながら覚えるPandas入門[Part1]
- 5. PythonでTwitterBotを作ろう!
- 6. Pythonで「ケツマイモ」と標準出力する方法
- 7. 【Python】二通りのtype()の使い方
- 8. 30代からのエンジニアへの就活方法
- 9. WindowsでKaggleのDocker Imageを導入して環境構築
- 10. webスクレイピングで画像を保存する
- 11. [Python][解説]AtCoder Typical DP Contest:A コンテスト
- 12. [Python]SVMでアヤメの種類を判別する
- 13. pythonでのGUI作成 tkinter使用して その1
- 14. YouTube Data APIでコメントとチャンネル登録者を取得する
- 15. セグメント木で区間に含まれる最長の文字長を得る
- 16. 「世界で闘うプログラミング力を鍛える本」Pythonコード解答例 – 2.7 交わるノード
- 17. Python3 標準入力 まとめてみた
- 18. slanted triangular learning rate を Keras で実装した
- 19. Google Cloud FunctionsからCloud Firestoreにpythonコードで接続する方法
- 20. 「世界で闘うプログラミング力を鍛える本」Pythonコード解答例 – 2.6 回文
【Python 初心者メモ】python の文字列、パス操作
python を勉強していて、色々と調べますが、いつも同じことを調べるので、自分用メモ的にまとめようと思います。
初投稿です。何かおかしなことがあれば、ご指摘いただけると嬉しいです。
ここでは、python の文字列、パス関連の関数についてまとめます。
## os.path.join
join() は、配列などを結合してくれる関数として一般的だと思いますが、
os.path.join() は パスをつなげてくれる関数と理解しています。たとえば、
“` python
osp.join(“dir1/”, “dir2”)
osp.join(“dir1”, “dir2”)
“`ともに、
“`
dir1/dir2
“`を返します。
主な使い方として、以下の2通りがあるようです。
“` python
osp.join(path1, path2)
osp.join(path1 + path2)
“`引数の先頭に「/」が来ると動作が変わるようです。
“` python
path1 = “path1”
path2 = “/path2”
osp.join
ディープラーニング協会G検定の勉強方法(初心者向け)【2020年版】
# 本記事では、初心者の方に向けて、ディープラーニング協会G検定に向けた勉強の仕方(の一例)を解説します
(最終更新:2020年2月3日)G検定についての詳細はこちらをご覧ください。
[ディープラーニング協会G検定とは](https://www.jdla.org/exam_201907g/)※本記事の書影は出版社の許可を得て(もしくは出版業界の共通データベースの画像を版元ドットコムから)使用しています。
# 【Step1】 AI・機械学習の概観を知る
以下の2冊を読み終えれば、AI・機械学習・ディープラーニングについて、お茶の間レベルではなく、ビジネスパーソンレベルでの知識が身につきます。
[人工知能は人間を超えるか ディープラーニングの先にあるもの
松尾豊、KADOKAWA/中経出版](https://www.amazon.co.jp/dp/4040800206/)![b1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576009/38c2089f-bb17-d9a7-c9da
正規表現_学習ノート_000_一覧
# pycharmに「正規表現チェックツール」の呼び出す方法
– カーソルは正規表現パターンの文字列中に置いて、「Alt+Enter」を押下して下記のポップアップウインドウズを呼び出すことができる
![reg001.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551056/f1e23485-3781-f7bd-f24f-d96e5822bf57.png)
![reg002.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551056/b625bfcc-98e0-f3b1-6ef7-71eea2e313e0.png)# 正規表現のメタ文字リファレンス
– 文字クラス|pattern | 説明文 |
|:————|:——————————————-|
|[abc
苦しみながら覚えるPandas入門[Part1]
## はじめに
Pythonでデータ分析をする際に避けては通れないライブラリ、それがPandasです。
ただこのPandas、初心者にはめちゃくちゃハードルが高い、、、
私もめちゃ苦労したので、基礎からしっかりとまとめようと思います。
私自身がPandasの上級者というわけではありませんので、コメントやアドバイス頂ければ幸いです。
また、今回の記事は3部構成の予定です。
(予定なので、変更になる可能性は大いにあります、、、)* 苦しみながら覚えるPandas入門[Part1] ← イマココ
* SeriesとDataFrameの作成方法
* DataFrameの各種属性について解説
* 苦しみながら覚えるPandas入門[Part2]
* DataFrameの各種メソッドについて解説
* 苦しみながら覚えるPandas入門[Part3]
* DataFrameの各種メソッドについて解説(続き)
* 値の更新、検索について
* DataFrameの計算についてでは始めましょう(*^▽^*)
### 注意事項
下記ライブラリの
PythonでTwitterBotを作ろう!
## TwitterBotとは
BotとはRobotが語源になっていて、自動でなんらかの処理をするもののことを指します。Twitterにおいて– 自動ツイートBot
– 自動いいねBot
– 自動フォローBotなど多岐にわたるBotが存在します。
## Botのメリットは?
自動ツイートは通知のような役割を果たします。例えば、「好きなアーティストのライブ情報が更新された場合に自動でツイートする」といったものが挙げられます。
自動いいね、自動フォローは不特定多数の人に自分のアカウントを知ってもらうためのツールとしての働きがあります。これは例えば、自分のTwitterアカウントのPR活動などに使われます。## Botの作成手順
Botの作成手順は主に以下の3ステップです。1. Twitter Developer登録
2. プログラム作成(Python)
3. 定期実行登録(Cron)## 実装
今回は定期的に現在時刻をツイートするBotを作成します。
詳細は以下の動画で紹介しています。## ソースコード
Pythonで「ケツマイモ」と標準出力する方法
* Python3系
“`{python3}
print(‘ケツマイモ’)
“`Python3ではデフォルトでUTF-8をサポートしているのでそのまま「ケツマイモ」を出力します。
* Python2系
“`{python}
print u’ケツマイモ’
“`“`{python}
print ‘ケツマイモ’.encode(‘utf-8’)
“`“`{python}
# -*- coding: utf-8 -*-
print ‘ケツマイモ’
“`Python2系では文字列にバイト文字列とユニコード文字列の二種類があり、デフォルトでASCIIをサポートするため、バイト文字列が出力されてしまいます。
「ケツマイモ」のようなマルチバイトなユニコード文字列を表示するためには、バイト文字列をユニコード文字列に変換する必要があります。
【Python】二通りのtype()の使い方
## はじめに
業務でDjangoのManager周りのコードを読んでいると
見慣れない`type()`の使い方を見つけました。GitHubのリンクは[こちら](https://github.com/django/django/blob/master/django/db/models/manager.py#L100-L108)
“`
@classmethod
def from_queryset(cls, queryset_class, class_name=None):
if class_name is None:
class_name = ‘%sFrom%s’ % (cls.__name__, queryset_class.__name__)
return type(class_name, (cls,), {
‘_queryset_class’: queryset_class,
**cls._get_queryset_methods(queryset_class),
})
“`typeに引数が三つ渡
30代からのエンジニアへの就活方法
## 今回は僕が実務未経験でエンジニアになれた転職方法について説明します。
もしかすると行動をフィードバックそして最適化をしていなければエンジニアになれなかったかも知れません。
この記事を読んだ私と同じ様な境遇の人の為になればと思います!### 内定時の私の特徴
性別 男
年齢 32歳
前職 クレーン運転士
プログラミング経験 半年(独学3ヶ月、留学3ヶ月)就活は留学から帰ってきてこの様な状態で初めました。
そしてこの頃の私は、エンジニアの需要は多いから30代からでもエンジニアに慣れるはず!
そんなに就活も難しくないのでは?このくらいに思っていました。笑
その後に死ぬほど焦ったのはいうまでもありません。## 利用した転職サービス
私は主にマイナビ転職を利用して転職活動をしました。その理由は
・留学先で紹介されたこと
・Web履歴書という物があるだいたいこの様な理由からマイナビを選んで転職活動を行っていました。
他にもWantedlyの話を聞きたいや、企業説明会に参加もしました。
職安に行き求人に応募もしましたよ。## 書類選考すら通らない
さすが
WindowsでKaggleのDocker Imageを導入して環境構築
手元のwindowsのノートブックにKaggleのDocker Imageを使って手軽に環境構築しようとした際に詰まった部分を備忘として記録します。
基本的に「[天色グラフィティ](https://amalog.hateblo.jp/entry/data-analysis-docker)」の記事を参考にしていますので、まずこちらを参照し、OSがwindowsのWin10 Pro以外かつDocker toolboxをお使いの場合は参考になるかと思います。
##つまずいた点① docker-composeのyamlの実行がvolume nameのエラーでうまくいかない
上記の記事の通りdocker-composeのyamlファイルを作成したら、エラーになりました。“`
version: “3”
services:
jupyter:
build: .
volumes:
– $PWD:/tmp/working
working_dir: /tmp/working
ports:
– 8888:8888
command:
webスクレイピングで画像を保存する
#概要
webサイト上の画像を、PythonのrequestsとBeautifulSoupを使ってPC上に保存します。ついでにスクリプトを実行時に画像を表示します。
#動機
Perfumeの画像を保存したいです。自動で保存できれば便利だと思いました。
#開発
##環境
| OS | Windows 10 |
| —- | —- |
| Python | 3.7.3 |
| requests | 2.22.0 |
| beautifulsoup4 | 4.8.2 |
##完成したコード
“`python:main.py
import requests
from bs4 import BeautifulSoup
import matplotlib.pyplot as plt
import cv2root = “https://www.perfume-web.jp/”
url = “https://www.perfume-web.jp/index-jpn.php”
store_path = “PATH”def img_store(path):p
[Python][解説]AtCoder Typical DP Contest:A コンテスト
問題へのリンク:https://atcoder.jp/contests/tdpc/tasks/tdpc_contest
## はじめに
[AtCoder 版!蟻本 (初級編)](https://qiita.com/drken/items/e77685614f3c6bf86f44)にこの問題が紹介されていましたが、古いコンテストのためか公式の解説がありませんでした。自分では解けず、[こちらの記事](http://garnacha.techblog.jp/archives/38634648.html)の解説を見ながらACしました。参考までに自分のコードを載せておきます。(DPは勉強中のため、正確性は保証できません)
わかりやすいように、コメントをたくさん付けました。
## 実装
“`python
# 入力の受け取り
N = int(input())
P = list(map(int, input().split()))# i問目までの問題を使って、j点の合計点ができるか(bool値)
DP = []
# 0問目は1問も問題を解いていない状態とする。N問あるので、DP
[Python]SVMでアヤメの種類を判別する
初心者向けのレクチャーによく使われるirisデータを使って、機械学習の分類問題にトライしてみます。
#使用するデータ
ireiデータ。(irisは「アヤメ」の花を意味。)
アヤメの品種のSetosa Versicolor Virginicaの3品種に関するデータ。
全部で150件のデータセット。#データセットの内容
Sepal Length:がく片の長さ
Sepal Width:がく片の幅
Petal Length:花びらの長さ
Petal Width:花びらの幅
Name:アヤメの品種データ(Iris-Setosa、Iris-Vesicolor、Iris-Virginicaの3種類)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269450/924a3fec-779f-850e-97f7-9e90b5d7bf2b.png)#採用するモデル
SVM(サポートベクターマシン)。
SVMは教師あり学習の分類問題に適している。
スパム判別器なども作ることが可能なモデル。
教師あり
pythonでのGUI作成 tkinter使用して その1
## 概要
pythonで作ったツールを実行する際、自分で作ったものであればコマンドラインから呼び出すことでも問題はないのですが、開発に関係していない方が使うツールの場合画面から操作できた方が都合がよかったりします。pythonでアプリが作れないかいろいろ調べて作った内容をまとめてみました。まだ作りこみが甘いので徐々に調整していく予定です。
## 必要なもの
* python 3.7.2
* pandas
* numpy## 公開場所
githubで公開しています。
https://github.com/snowpff14/etcresource/tree/master/pythonGui## 処理内容
以前作ったseleniumの練習サイト操作用のスクリプト[こちら参照](https://qiita.com/snowp/items/9f51fd0d4b5b20196872)、エクセルファイルの列追加、行削除のスクリプト[こちら参照](https://qiita.com/snowp/items/94f8bb06a08e42af6bba)を起動できるようにしました。
YouTube Data APIでコメントとチャンネル登録者を取得する
# やりたかったこと
特定のチャンネルにコメントを動画しているユーザ群について、それぞれのユーザがどのチャンネルを登録しているかを取得する。
それによって、客層の推定ができるのでは?という想定。同じチャンネルを登録しているユーザが複数いる場合、そのチャンネルのトピックスに関心がある人が客層になっている可能性がある。
(本当に客層の推定ができるのかは未検証なので、できたらまたどこかに投稿しようと思っています)# 説明すること
1. 指定したチャンネルに投稿された動画につけられたコメントを取得する方法
1. 指定したチャンネルが登録しているチャンネルを取得する方法# 以前説明したので、今回は説明しないこと
* APIの使い始めの登録部分
* https://qiita.com/moshisora/items/4ea23d5abd7b4d852955 を参考にやりました
* あるチャンネルに投稿されている動画一覧の取得
* 具体的には channels, playlistItems, videos APIの使い方
* https://qiita.com/
セグメント木で区間に含まれる最長の文字長を得る
セグメント木は「乗せるものによっていろいろなことができる」と書いてあったので思いついたものを実装した。乗せるものの工夫をしなければいけないと各所に書いてあるが良い例だったので投稿。
# 実現できること
– 初期化: $O(N)$
– 区間のある文字の最大長取得: $O(logN)$
– 1文字置換: $O(logN)$# 想定する問題
以下のような問題に高速に答えたい。
– n文字の文字列sが与えられる。sは1文字目から$s_{1}, s_{2} \dots s_{n} $と表現する。
– 次の5種類 q個のクエリに答えろ。1. `set(i,x)` $s_{i}$をxという文字に書き換える。
2. `getCount(s,t)` $s_{s},s_{s+1}, \dots , s_{t}$ の区間に含まれる`a`の数を答える。
3. `getLongestLen(s,t)` $s_{s},s_{s+1}, \dots , s_{t}$ の区間に含まれる`連続したaの数`の最大値を答える。
4. `getLeftLen(s,t)` $s_{s},s_{s+1}, \dot
「世界で闘うプログラミング力を鍛える本」Pythonコード解答例 – 2.7 交わるノード
「世界で闘うプログラミング力を鍛える本」Pythonコード解答例 – 2.7 交わるノード
#Pythonコード解答例
“`python:from chap2_function import*
def dll_from_node(node):
dll = DoublyLinkedList()
while(node is not None):
dll.append(node.data)
last = node
node = node.nextreturn dll
class Result:
# コンストラクタ
def __init__(self, tail, size):
self.tail = tail
self.size = sizedef findIntersection(list1,list2):
if list1 == None or list2 == None:
return Non
Python3 標準入力 まとめてみた
# はじめに
競技プログラミングを最近始めたので案外めんどくさい標準入力についてまとめました。
出力とかの処理についてはあとできれいに直します。# input高速化
“`:高速化
import sys
input = sys.stdin.readline
“`#単純な入力
“`:input
apple
orange
10
12.5
“`“`
a = input()
b = str(input())
c = int(input())
d = float(input())
“`# List型
“`:input
1
2
3
4
5
“`“`
X = [int(input()) for i in range(5)]
print(X)
“`
“`:output
[1, 2, 3, 4, 5]
“`“`:input
1 2 3 4 5
“`“`
A = list(map(int,input().split()))
print(A)
“`“`:output
[1, 2, 3, 4, 5]
“`# List in 〇〇
slanted triangular learning rate を Keras で実装した
# 概要
某コンペサイトで自然言語処理のコンペに参戦中で、BERTをfine-tuningしたかった。Slanted triangular learning rate (STLR) が良いという情報を得て、Kerasで実装してみたところ、かなり精度が上がった。
# Slanted triangualr learning rate
参考にしたのは↓の論文。
– [Universal Language Model Fine-tuning for Text Classification](https://arxiv.org/pdf/1801.06146.pdf)
Fig.2 を見れば分かる通り、学習初期の学習率の warm-up と中盤以降の学習率の減衰を、どちらも線形にする。傾いた三角形のようなので、slanted-triangular。
ちなみにSTLRを使おうと思った元の論文は↓。
– [How to Fine-Tune BERT for Text Classification?](https://arxiv.org/pdf/1905.05583.pdf)
# Kera
Google Cloud FunctionsからCloud Firestoreにpythonコードで接続する方法
# はじめに
Google Cloud Functions for Firebaseではなく、pythonコードかつGoogle Cloud Functionsから繋ぎたい時にどうするかという対応方法をまとめました。Firebaseから認証情報引っ張ってくるとかは書いてないので、他の記事を参考にしてください。
# 環境
python 3.7で作ったGoogle Cloud Functionsfirebase-admin 3.2.1
# Google Cloud Functionsでpythonコードを作った時の制限
main.pyとrequirements.txtしか受け付けてくれないようです。
よくあるserviceAccountKey.jsonファイルを読み込んでーという方法ではだめでした。
credentials.Certificateを使って認証する一般的なやり方ですね。# credentials.Certificateをファイル以外から作成しよう
なので、他の方法を探りました。まずはAPI仕様書を確認しました。
https://firebase.goog
「世界で闘うプログラミング力を鍛える本」Pythonコード解答例 – 2.6 回文
「世界で闘うプログラミング力を鍛える本」Pythonコード解答例 – 2.6 回文
#Pythonコード解答例
“`python:from chap2_function import*
def isPalinedrome(head_node):
reversed_node = reverseAndClone(head_node)
return isEqual(head_node,reversed_node)def reverseAndClone(node):
head_node = None
while node:
n = Node(node.data)
n.next = head_node
head_node = n
node = node.nextreturn head_node
def isEqual(one,two):
while one and two:
if one.data != two.data: