- 1. [Python 入門] pandasを使ってみよう
- 2. Hello world!から始めるPython
- 3. jinja2のget_template()のパスをカレントディレクトリに依存させない
- 4. TF-IDFを実装してみた
- 5. Pythonによるプログラミング時に使用するライブラリ【開発分類別】
- 6. クラスの多重継承
- 7. 【お手軽Python】pandasによるExcelファイル読み込み
- 8. [Python3 入門 23日目]12章 パイソニスタになろう(12.1〜12.6)
- 9. PythonでmongoDBを操作する~その6:aggregate編~
- 10. 【python3】いずれかの文字列が含まれるかの判定
- 11. 【python】mock.patchでクラス関数を置き換える際にselfパラメータが通常引数扱いとなる
- 12. Python3でgcloudコマンドを動かせるようにする
- 13. 乃木坂46のメンバー秋元真夏のブログの写真をスクレイピングする
- 14. 【Qiita】バックアップのために記事と画像をエクスポート
- 15. gRPC の使い方 (python)
- 16. Backtraderのインストール
- 17. Backtrader CSVデータを用意してサンプルスクリプトを動かしてみる
- 18. [Python]infで正の無限大を表す
- 19. Tensorflow.Kerasモデルで TPU/GPU/CPU を自動的に切り替える
- 20. [Python]Qiitaの記事情報をmongoDBに突っ込んだ
[Python 入門] pandasを使ってみよう
#[Python 入門] pandasを使ってみよう
前回の続きと改善していきたい点を紹介します。
さてこんな感じで図ができていました。
![2020-02-06 (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574563/8b684549-9499-b451-ec4d-5611cf118c46.png)
(前回は”matplotlib”の設定がわからず軸名に日本語が使えていませんでした。今回は修正したため、図の軸名が日本語で表示できています。)さてもう少しこのデータで遊んでみましょう。前回の続きのコードとなります。
“`
nikkei.corr()
“`とすると相関関係の表が得ることができます。
“`
ax = sns.heatmap(nikkei.corr(), annot=True)
“`さらにとすればヒートマップというものを作ることができます。こんな感じ…
![2020-02-06 (1).png](https://qiita-image-store.s3
Hello world!から始めるPython
## はじめに
Pythonを始める初心者向けの記事です。
今回は”Hello world!”を出力するプログラムを書いてみましょう。## 何故”Hello world!”から始めるのか
言語を学ぶにあたり、まずは文字列の出力という一番簡単な操作を実践してみることはとても大切です。例えグーグルの超優秀なAIエンジニアであっても、最初の一歩は必ず”Hello world!”からだったはずです。
AIエンジニアを目指した駆け出しエンジニアのあなたも、さっそく”Hello world!”をpythonで記述してみましょう。
## 環境構築
Macではpython2.7がデフォルトでインストールされているので環境構築は不要です。
Windowsを使っている方はMacを買いましょう。## Pythonの起動
terminalを開いて、次のワンコマンドでpythonが起動できます。“`
python
“`
## Hello world!の出力
`import __hello__`コマンドを利用します。“`
>>> import __hello__
Hello wo
jinja2のget_template()のパスをカレントディレクトリに依存させない
パステンプレートファイルのパスが間違っているとこんなエラーが出る(検索用)
“`python3
jinja2.exceptions.TemplateNotFound: xxxx.html
“`* デフォルトではFileSystemLoaderに渡すパスをルートとして相対パスでファイルを検索するようになっている
* 仮に`’.’`と指定するとカレントディレクトリからの相対パスになる
* そこでこのコードを書くファイル自体の絶対パスをルートにすることによって実行場所、ファイルの配置場所を選ばなくなる“`python3
from jinja2 import Environment, FileSystemLoader
from os import path
env = Environment(loader=FileSystemLoader(path.dirname(__file__)))
template = env.get_template(‘template.html’)
“`
TF-IDFを実装してみた
最近TF-IDFについてのコードをPythonで書いたので、それについて自分なりにまとめておきます。解釈違いなところなどありましたら指摘してください。
ソースコードはこちら:[Github](https://github.com/hatopoppoK3/NaturalLanguageProcessing/blob/master/TF-IDF/)
# TF-IDFとは
wikipediaから引用 https://ja.wikipedia.org/wiki/Tf-idf
> tf-idfは、文書中に含まれる単語の重要度を評価する手法の1つであり、主に情報検索やトピック分析などの分野で用いられている。 tf-idfは、tf(英: Term Frequency、単語の出現頻度)とidf(英: Inverse Document Frequency、逆文書頻度)の二つの指標に基づいて計算される。文書の中での単語の重要度を表すものであり、その文書の特徴などを知りたいときに使います。TF値とIDF値を掛け合わせたものがTF-IDF値になります。
## TF(Term Frequency 単語の出
Pythonによるプログラミング時に使用するライブラリ【開発分類別】
# 概要
Pythonは「pip」が優秀で、情報もあふれているので最近よく使用しています。
ここでは、一つ一つのライブラリの使い方については説明しません。開発分類別に私が採用しているライブラリを列挙し、ライブラリの導入方法について説明します。# 開発環境
私は特別にこだわりはないので「Anaconda」を使用しています。本当はLinux PCで「virtualenv」を使用し環境を組みたいと思っているけれど、すでにWindowsで環境を組んでしまっているので、面倒くさがっています。
# 開発分類
– Webアプリ開発
– 組込みソフトウェア(センサ制御)
– デスクトップアプリ
– 画像処理
– 機械学習## Webアプリ開発
サーバサイドのプログラムを作成できます。私が採用していているのは「**flask**」です。PythonのWebフレームワークとしては「Django」ですが、こちらは機能もりもりのフレームワークです。それに対し、flaskは機能は単体では機能が少ない代わりに、覚えることが少ないです。flaskはサーバサイドレンダリングできるのですが、そのう
クラスの多重継承
“`py:1
class Person(object):
def talk(self):
print(‘talk’)
def run(self):
print(‘person run’)class Car(object):
def run(self):
print(‘car run’)class PersonCarRobot(Person, Car):
def fly(self):
print(‘fly’)person_car_robot = PersonCarRobot()
person_car_robot.talk()
person_car_robot.run()
person_car_robot.fly()
“`“`:1の実行結果
talk
person run
fly
“`
PersonCarRobotクラスは、
PersonクラスとCarクラスの両方を継承している。
なので、
両方のクラスのメソッドを持っている。ここで、
PersonクラスもCarクラス
【お手軽Python】pandasによるExcelファイル読み込み
#pandasとは
pandasとは、Pythonのライブラリです。
pandasは、主にデータを操作する時に使われます。AIや機械学習にpandasは必須です。
ですが、Excelのファイルを操作する機能も搭載されています。
今回は、pandasを使ったExcelファイルの読み込みの仕方について説明していきます。#Excelファイル読み込み
###最初のシートのみの読み込み
sample.xlsxの中身が
![bandicam 2020-01-20 16-36-57-804.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240459/c815e4d5-f406-100b-39f2-fa83c8fe0fba.jpeg)
だった場合“`python:main.py
import pandas as pd
df = pd.read_excel(‘sample.xlsx’)
print(df)
“`上記のmain.pyを実行すると
![bandicam 2020-01-20 16-44-4
[Python3 入門 23日目]12章 パイソニスタになろう(12.1〜12.6)
#12.1 コードのテスト
##12.1.1 pylint、pyflakes、pep8によるチェック
“`py:style1
a=1
b=2
print(a)
print(b)
print(c)“`
“`py:実行結果
$ pylint style1.py
************* Module style1
style1.py:1:1: C0326: Exactly one space required around assignment
a=1
^ (bad-whitespace)
style1.py:2:1: C0326: Exactly one space required around assignment
b=2
^ (bad-whitespace)
style1.py:1:0: C0114: Missing module docstring (missing-module-docstring)
style1.py:1:0: C0103: Constant name “a” doesn’t conform to UPPER_CASE naming
PythonでmongoDBを操作する~その6:aggregate編~
#当記事の記載範囲
この記事ではPythonでmongodbに接続してから、aggregate(SQLで言うところの集計関数)の使い方について記載します。
mongodbの起動やpymongoのインストール方法については以下の記事をご覧いただければ幸いです。
https://qiita.com/bc_yuuuuuki/items/2b92598434f6cc320112# 準備データ
準備データは以下の記事でmongoDBに突っ込んだQiitaの記事情報を使用します
[[Python]Qiitaの記事情報をmongoDBに突っ込んだ](https://qiita.com/bc_yuuuuuki/items/3b89a4b4ac26a43eb20a)# aggregateの使い方
mongoDBのaggregateの使い方はSQLに慣れているとイマイチピンと来ないです。
下表がSQLとaggregateの対比表です。|SQL |aggregate |
|—|—|
|WHERE |$match |
|GROUP BY |$group |
|HAVING |
【python3】いずれかの文字列が含まれるかの判定
またまたメモ書きの駄ブログ。
# 概要
以下のプログラムで期待する処理が動いたことは確認できた。
“`python
if ‘soccer’ in hogehoge or ‘baseball’ in hogehoge:
“`しかし数が多いとプログラムが横に長くなるので、
まとめて判定できないかとふと思った。# テストその1
“`python
if {‘soccer’, ‘baseball’} in hogehoge:
“`これはTypeError。
なんか色々と間違ってる。# テストその2
“`python
import retry:
re.search(‘(soccer|baseball)’, hogehoge).group(1)
except AttributeError:
pass
“`これは出来そうだけど例外処理が入るので1行で書けない。
# テストその3
“`python
import reif re.search(‘(soccer|baseball)’, hogehoge) is not None:
`
【python】mock.patchでクラス関数を置き換える際にselfパラメータが通常引数扱いとなる
## はじめに
mock.patchを使ってクラス関数をテスト用に作成したクラス関数に置き換えたいのだが、
テスト用クラス関数のselfが通常引数扱いされ、引数の数が合わずTypeErrorが発生して詰まった。解決したのでメモ
## 失敗例
“` test_human.py
import unittest
from unittest.mock import patchclass Human:
def set_name(self, name):
self.name = namedef get_name(self):
return self.nameclass TestHuman(unittest.TestCase):
def test_human(self):
“””Human クラスの get_name を常に “しげる” を返す関数に置き換える”””
with patch(‘test_human.Human.get_name’) as get_name_mock:
Python3でgcloudコマンドを動かせるようにする
# tl;dr;
“`bash
export CLOUDSDK_PYTHON=3
“`# 説明
`pyenv` 等でpython3, gcloudをインストールした環境では、gcloud実行時に以下のようなエラーが出ることがある。
“`
$ pyenv local
3.7.4
$ gcloud
pyenv: python2: command not found
The `python2′ command exists in these Python versions:
2.7.17
“`
gcloudがpython2でしか動作しないのかというとそうではなく、
ドキュメントにはGoogle Cloud SDK version 274.0.0以降であればpython3.5以上で動作する(GA)と書いてある。
https://cloud.google.com/sdk/docs/?hl=en
> As of Cloud SDK version 274.0.0, the gcloud CLI has GA support for running using a Python
乃木坂46のメンバー秋元真夏のブログの写真をスクレイピングする
# 乃木坂46のメンバー秋元真夏のブログの写真をスクレイピングする
BeautifulSoupの使い方の練習もかねて、秋元真夏のブログの写真を全て保存するプログラムを作成した。
“`python
url = ‘http://blog.nogizaka46.com/manatsu.akimoto/’
headers = {
“User-Agent”: “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0”,
}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, “lxml”)
“`
【Qiita】バックアップのために記事と画像をエクスポート明日Qiitaに隕石が衝突するかもしれない, もしものために.
#環境
– Windows 10記事バックアップ
– Python 3.8.1
– Git for Windows 2.5.3(Command Lineで実行)画像取得
– サクラエディタ Ver2.2.0.1
– DS Downloader Ver2.12.0Mac環境でもできると思います. 試していないため, あくまで提案です.
– Boot Camp
– Wineで実行.
– (仮想化ソフトウェア(VirtualBox等))
– Macでサクラエディタ
– grep機能があるエディタ
– [SiteSucker for MacOS](https://ricks-apps.com/osx/sitesucker/index.html)#記事エクスポート
@i-tanaka730さんのgRPC の使い方 (python)参考ページ
[Python Quick Start](https://grpc.io/docs/quickstart/python/)必要なライブラリーのインストール
“`bash
sudo python -m pip install grpcio
sudo python -m pip install grpcio-tools
“`設定ファイル、サーバープログラム、クライアントプログラムの3つが必要です。
設定ファイル
“`text:helloworld.proto
syntax = “proto3”;
option java_multiple_files = true;
option java_package = “io.grpc.examples.helloworld”;
option java_outer_classname = “HelloWorldProto”;
option objc_class_prefix = “HLW”;package helloworld;
service Greeter {
rpc SayHello (HelloRBacktraderのインストール
backtraderの日本語記事が少なかったので自分が書いてみることにしました。
つまづいたことや動かしてみてわかったことを書き留めていこうと思います。
間違っている部分を見つけたらコメント等で指摘していただけると幸いです。backtrader人口が増えてもっと解説記事が増えたらいいなー、と願ってます。
私の動作環境
`Windows8.1pro 64bit`
`Anaconda3 2019.10`
`(backtrader用の仮想環境をPython3.5で構築)`#Python3.5仮想環境にJupyternotebookインストールするときの注意
Anaconda3のインストールや仮想環境の構築に関してはわかりやすくて詳しい記事がたくさんありますのでそちらを参考にしてみてください。
私の場合、仮想環境にJupyternotebookをインストールしたら起動時にカーネルエラーが発生しました。Win32apiが見つからないという趣旨のことが書かれていて仮想環境にPIP経由でpywin32をインストールすることで解決できました。こちらの記事に詳しく書かれています。
*
Backtrader CSVデータを用意してサンプルスクリプトを動かしてみる
#サンプルスクリプトそのままだとエラーになってしまう
backtrader Document_Quickstart
https://www.backtrader.com/docu/quickstart/quickstart/インストールを終えて、こちらのページにあるサンプルスクリプトを動かす段階で「指定されたPathにCSVファイルがない」という趣旨のエラーが出ました。
検索してみましたが、該当するフォルダそのものがローカルにありませんでした。どうやらPIPでbacktraderをダウンロードするとサンプルスクリプトを動かす際に使うデータフォルダおよびサンプルフォルダそのものが同梱されないみたいです。
https://github.com/mementum/backtrader/blob/master/datas/orcl-1995-2014.txt
そこでGitから「orcl-1995-2014.txt」をコピーしてどこか適当な場所に保存します。そしてスクリプト内のファイルパス指定部分を書き換えます。“`python:datapath.py
datapath = o
[Python]infで正の無限大を表す
float(‘inf’)もしくはmath.infを使う。(math.infはPython3.5から)
## 実行してみる
“`python
>>> float(‘inf’)
inf>>> import math
>>> math.inf
inf>>> float(‘inf’) == math.inf
True>>> math.inf > 10 ** 10
True
>>> math.inf < 10 ** 10 False ``` ## ドキュメント https://docs.python.org/ja/3/library/math.html#math.inf
Tensorflow.Kerasモデルで TPU/GPU/CPU を自動的に切り替える
# はじめに
この記事は、TensorFlow.kerasを使用していたとき、ハードウェア情報(主にColaboratoryのランタイム情報)を読み取って、TPUとGPU(一応CPUも)を自動的に切り替えて実行できるプログラムを書く方法をまとめています。 ~~(手動でコメントアウトするのが面倒になってきたため)~~
大体、[公式サイト](https://cloud.google.com/tpu/docs)(Google Cloud, Cloud TPU Docs)掲載の[KerasとTPUでMNIST](https://colab.research.google.com/github/tensorflow/tpu/blob/master/tools/colab/keras_mnist_tpu.ipynb)を要約した内容です。tensorflow.kerasに慣れている方は、参照元を読んだほうがわかりやすいかもしれません。
補足・注意など
– 動作検証はColaboratory上で実施しています。
– たぶんtensorflow ver2にも対応しています。
– tensorfl
[Python]Qiitaの記事情報をmongoDBに突っ込んだ
# やりたいこと
Qiitaの記事情報をQiitaAPIで取得し、どの記事、どのタグがよく見られているのか?などを確認したい。
その第一歩として、APIで取得した情報をmongoDBに登録してみる# Qiitaの記事情報を取得する
今回の内容はPythonで書いています。
記事情報の取得は以下の記事を参考にさせていただきました。[Qiita APIをPythonから使ってみる](https://qiita.com/sotoiwa/items/e2254893f5b0b92bb06e)
~~~ get_qiita_info.py
import requests
import logging
import jsonformatter = ‘%(asctime)s %(name)-12s %(levelname)-8s %(message)s’
logging.basicConfig(level=logging.WARNING, format=formatter)
logger = logging.getLogger(__name__)class GetQiitaInfo(