Python関連のことを調べてみた

Python関連のことを調べてみた
目次

環境構築エラー解決バイブル 〜 PyTorch/cuda/numba/LLVMなどを倒す

# 数年前の機械学習コードが動かない?

あなたがAIの研究者であったり、AIに関連するサービスの開発者であるならば、少し昔の機械学習モデルを動かしたい機会が少なからずあることでしょう。

しかし、いざ`git clone`して`pip install -r requirements.txt`するとエラーがわんさか…ということはザラにあります。
全部インストール出来たのに、実行段階でエラーになる事もしばしば…

以下では、そのような状況を打開するための方法を、私個人の経験に基づいて説明しようと思います。

使用するOSはUbuntu、実行環境はローカルまたは社内サーバー等を想定しています。

# 必ず使用すべきツール

以下は私が強く推奨するツールです。絶対に使った方が良いので今すぐインストールして下さい。

– `pyenv`: Pythonのバージョンを自由に変えられる
– `venv`: Pythonのパッケージをプロジェクト毎に独立させる (インスコ不要)
– `docker`: システムの環境をプロジェクト毎に独立させる
– `aptitude`: システムパッケージの依存を

元記事を表示

Pythonエンジニアの将来性とキャリア展望

# Pythonエンジニアの将来性とキャリア展望

Pythonは、プログラミング言語の中でもその使いやすさと多様性で知られ、特に近年のAI(人工知能)やデータサイエンス分野の発展によって需要が高まっています。本記事では、Pythonエンジニアの将来性について、初心者にもわかりやすく解説します。今後のキャリア展望や高給与の可能性、そして学び続けることの重要性を含め、Pythonエンジニアとしての成長を促すポイントについて見ていきましょう。

## 目次

1. 需要の高まり
2. 高給与の可能性
3. キャリアの発展性
4. 継続的な学習の必要性
5. まとめ

## 1. 需要の高まり

### AI・データサイエンス分野での急成長

Pythonは、特にAI、機械学習、データサイエンスの分野で欠かせない言語となっています。これらの分野では膨大なデータを迅速に処理する必要があり、Pythonのシンプルな構文と豊富なライブラリが非常に役立ちます。例えば、機械学習のライブラリである**TensorFlow**や**scikit-learn**、データ分析に特化した**

元記事を表示

Python学習者向けおすすめリソース一覧

# Python学習者向けおすすめリソース一覧

Pythonは現在、最も人気のあるプログラミング言語の一つであり、初学者から上級者まで幅広いリソースが提供されています。本記事では、Pythonの学習に役立つ主なリソースやコースについて、カテゴリー別に紹介します。初心者から上級者まで、さまざまなレベルの学習者が自分のペースで学べる内容をまとめていますので、ぜひご活用ください。

## 目次

1. オンラインコース
2. 無料のオンラインリソース
3. 書籍
4. インタラクティブな学習サイト
5. 大学のMOOC
6. YouTube動画
7. コミュニティリソース
8. まとめ

## 1. オンラインコース

Pythonの基礎から応用まで、さまざまなオンラインコースが提供されています。人気のプラットフォームでは、コース内容やレベルも豊富に揃っており、自分の目的に合った学習が可能です。

– **Coursera**: 名門大学や企業と提携し、Pythonの基礎から高度な応用までカバーしたコースが揃っています。
– **Udemy**: 価格が手頃で、多くのユ

元記事を表示

Matplotlibのax.plot()についての解説

## Matplotlibの`ax.plot()`についての解説

`ax.plot()`は、Pythonのデータ可視化ライブラリMatplotlibを用いてデータをグラフに描画する基本的なコマンドです。このコマンドを利用することで、カスタマイズされたプロットが可能になります。以下に、このコマンドの要素について詳しく説明します。

### 1. `ax.plot()`

– **`ax`(Axesオブジェクト)**: `ax`は、Matplotlibの`Axes`オブジェクトで、グラフの描画領域(プロット領域)を表しています。`Axes`オブジェクトを通じて、グラフの詳細な設定やデータの描画を行います。`ax.plot()`は、指定したデータをこの`Axes`オブジェクトにプロットするためのメソッドです【1】【3】。

– **`plot()`メソッド**: `plot()`は折れ線グラフを描画するための基本的な関数で、引数としてx軸、y軸のデータを受け取り、グラフ上にプロットを描画します。

### 2. データの指定

– **x軸のデータ (`location`)**:

元記事を表示

MatplotlibにおけるAxesオブジェクトの使い方とカスタマイズ方法

# MatplotlibにおけるAxesオブジェクトの使い方とカスタマイズ方法

MatplotlibはPythonのデータ可視化ライブラリとして広く使われており、データを視覚的に表現するための多彩な機能が備わっています。その中でも**Axesオブジェクト**は、グラフを描画する際に中心的な役割を担います。この記事では、Axesオブジェクトの主要な使い方とカスタマイズ方法について、初心者にもわかりやすく説明します。この記事を読むことで、MatplotlibのAxesオブジェクトを用いたグラフ作成とそのカスタマイズ方法を習得できます。

## 目次

1. Axesオブジェクトの作成
2. データのプロット
3. 軸ラベルとタイトルの設定
4. 凡例の追加
5. グリッドの表示
6. 軸の範囲設定
7. 目盛りの設定
8. 複数のプロットの重ね合わせ
9. テキストの追加
10. スタイルの設定
11. 対数スケールの設定

## 1. Axesオブジェクトの作成

Matplotlibでグラフを描画するには、まずAxesオブジェクトを作成する必要があります。これは`

元記事を表示

MatplotlibにおけるAxesオブジェクトのサイズと位置のカスタマイズ方法

# MatplotlibにおけるAxesオブジェクトのサイズと位置のカスタマイズ方法

MatplotlibのAxesオブジェクトのサイズや位置を細かく調整することにより、グラフのレイアウトを柔軟にデザインすることができます。本記事では、各種メソッドや機能を使ってAxesのサイズと位置をカスタマイズする方法について解説します。複数のプロットやサブプロットを配置する際にも便利な設定方法を紹介するので、用途に応じて最適な方法を選択しましょう。

## 目次

1. `figure`サイズの指定
2. `set_position()`メソッドの使用
3. `subplots_adjust()`の使用
4. `tight_layout()`の使用
5. `GridSpec`の使用
6. `add_axes()`メソッドの使用

## 1. `figure`サイズの指定

`figure`サイズの指定は、図全体の幅と高さを設定するために用います。`plt.subplots()`を使う際に`figsize`引数を指定することで、グラフのサイズを簡単に調整できます。

“`py

元記事を表示

Pythonにおける条件付きラベル設定のテクニック:凡例を効率的に管理する方法

# Pythonにおける条件付きラベル設定のテクニック:凡例を効率的に管理する方法

PythonのMatplotlibを使って複数のデータポイントをプロットする際に、凡例(Legend)の表示を効果的に管理するテクニックとして、「条件付きラベル設定」が役立ちます。この方法を使用することで、複数のデータポイントがある中で冗長な凡例を避け、見やすく整理されたグラフを作成できます。この記事では、条件付きラベル設定の詳細とその利点、使用例について解説します。

## 目次

1. 条件付きラベル設定の構造
2. この設定を使う目的
3. 条件付きラベル設定の動作
4. このテクニックの利点
5. 使用例
6. 注意点と代替方法
7. まとめ

## 1. 条件付きラベル設定の構造

条件付きラベル設定は、Pythonの三項演算子を使用して、特定の条件が満たされた場合にのみラベルを設定するという構造です。以下のコードは、その構造を示しています。

“`python
label=’12/7′ if i == 0 else “”
“`

この構造では、`i == 0` が真

元記事を表示

Matplotlibにおける複数条件に基づいたラベル設定方法

# Matplotlibにおける複数条件に基づいたラベル設定方法

Matplotlibで複数のデータポイントをプロットする際、インデックスやデータの値など特定の条件に基づいてラベルを設定することができます。適切なラベルを設定することで、グラフの可読性が向上し、重要な情報を効果的に伝えることが可能です。ここでは、複数条件に基づいてラベルを設定するさまざまな方法を紹介します。

## 目次

1. 条件分岐を使用する方法
2. 辞書を使用する方法
3. リスト内包表記を使用する方法
4. カスタム関数を使用する方法
5. `numpy.where`を使用する方法

## 1. 条件分岐を使用する方法

`if`文や`elif`文を用いて、条件ごとに異なるラベルを設定するシンプルな方法です。例えば、最初のデータポイントに「First data point」のラベルを付け、10の倍数のインデックスには「Every 10th point」のラベルを付けることができます。

“`python
for i in range(len(data)):
if i == 0:

元記事を表示

【ゲーム制作】pygameのイベントキューでハマったお話

## 目次
– [はじめに](#はじめに)
– [何にそんなに悩んでいたのか](#何にそんなに悩んでいたのか)
– [解決策!(失敗)](#解決策失敗)
– [解決策!(成功)](#解決策成功)
– [最後に](#最後に)

## はじめに
 普段pygameでゲーム制作を行っている筆者ですが、学習を始めてからずっと悩んでいた問題を、本格的に解決しようと思ったので、その過程を書いていきます。同じような悩みで時間を浪費する人が、一人でも少なくなるように願っています。ちなみに筆者が使っているPCはSurface Pro9です。

## 何にそんなに悩んでいたのか
 そもそも何にそんなに悩んでいたのかですが、タイトルの通りイベントキューに関することです。この話をするにあたって、キー入力を検知したら、キーの名前を出力し2秒待機するコードを置いておきます。
“`python:test.py
import pygame, sys
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((512, 512

元記事を表示

Pythonにおける規格化 (Normalization) と正規化 (Standardization) の違い

# Pythonにおける規格化 (Normalization) と正規化 (Standardization) の違い

データを解析や機械学習に適した形に整える前処理として、「規格化」と「正規化」という手法が広く用いられます。これらはどちらもデータのスケーリング手法ですが、手法と適用目的が異なります。ここでは、両者の違いと使用例について説明します。

## 目次

1. [規格化 (Normalization) とは](#規格化-Normalization-とは)
2. [正規化 (Standardization) とは](#正規化-Standardization-とは)
3. [規格化と正規化の違い](#規格化と正規化の違い)
4. [使い分けのポイント](#使い分けのポイント)
5. [Pythonでの実装例](#Pythonでの実装例)
6. [まとめ](#まとめ)

## 規格化 (Normalization) とは

規格化は、データを特定の範囲(通常は0から1)に収める手法です。Min-Maxスケーリングとも呼ばれ、特徴量の最小値を0、最大値を1にスケー

元記事を表示

【技術書典】300ページ超えのStreamlitの入門書を頒布した話

# はじめに
こんにちは。データエンジニアの山口歩夢です!

11/3の技術書典のオフラインイベントにて、300ページ超えのStreamlitの入門書を頒布してきました。

Streamlitの基本的な内容から、Streamlitで用意されている関数のパラメータなどについても一つひとつ解説し、ユースケースの紹介もさせていただきました。
![IMG_3921.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/883573/39f8aee2-5ab7-ced6-8972-9e4bc705a3bb.jpeg)

以下のURLから電子版が購入可能なため、是非チェックしてみていただけると幸いです。
発売時期は未定ですが、商業本についても準備を進めております!

https://techbookfest.org/product/fhiwFCAW3weeFibUeFc4p1?productVariantID=1m3McjcE7dvXzMZcwQDz8c

当日会場にて手に取ってくださった皆様、興味を持ってくださった皆様

元記事を表示

boto3でECSのExecute Commandを使ってローカルとコンテナでファイルをコピーする

# 概要

ECSのExecute Commandはものすごく便利で、コンテナ内に入ってデバッグする際には重宝します。そこで、ファイルのコピーがしたいなぁと思うこともあります。
それほど大きくないテキストファイル(例えばPEM公開鍵とか)ならコピペでもいいですが、ちょっと大きめのファイル(設定ファイルなど)とかバイナリファイルだと少し面倒です。

そういったことを実現するためにboto3を使ってセッションを開いて、セッション経由でいろいろ試してみましたのでメモしておきます。ここではファイルのコピーにフォーカスしていますが、セッションWebSocketでの通信についてもまとめてありますので、boto3を使ったオートメーションにも応用できると思います。通信仕様に関する公式なドキュメントが見つけられなかったので、仕様通りの動作ではないかもしれませんが、ファイルコピーに関しては一応動作しました。

ここではFargateのコンテナに対して行いました。コンテナへの接続設定は完了している前提で、設定方法は扱いませんので、以下のページなどを参考にして下さい。

– [[DevelopersIO] 実

元記事を表示

WRIMEデータベースを学習素材として8感情分析ができるモデルを作成する【2024年版】

# はじめに
本記事ではアンケート分析などの自由記入欄の解析で利用できる8感情分析を行うAIモデルを紹介します。

# 対象者
* Pythonを普段から業務で行っている人
* AIモデルを実装してみたい人
* 解析ソフトウェアは高くて購入できない人

# 参考記事
ベースとなる記事はこちらです。2024年時点だと、バージョンが変わっているためこの記事をそのまま転写だと上手く実装できません。ですのでこちらの記事から少し作業する必要があります。

https://qiita.com/izaki_shin/items/2b4573ee7fbea5ec8ed6

WRIMEデータベースもこの記事からバージョンが上がっています。無償で貴重なデータベースを公開してくださったことに感謝しかありません。

https://github.com/ids-cv/wrime/tree/master

# Python環境
VSCode + venv – Python(3.12.1)
CPU: AMD Ryzen 7 5800X
GPU: NVIDIA GeForce RTX 3070Ti

# 全体の流れ

元記事を表示

seabornやmatplotlibで2つ以上のグラフを重ねて描く(いずれかのグラフが一意の値しか持たない場合)

先日`seaborn`や`matplotlib`でヒストグラムを書こうと思った時に苦戦したので、備忘録と併せて記事を書きます。

具体的には以下のような状況に陥りました。
・2つ以上のグラフを重ねて書きたい(2群以上あるデータを合わせてplotしたい)
・いずれかのグラフが一意の値しか持たない(ex. 0しか持たない)ためうまく表示されない

要するに右図のようなグラフを描きたかったのに、左図のようなグラフしか書けずに苦戦した、という訳です。


IT入門者必見!Python aiohttpを使うウェブスクレイピングの新境地

## 初めに
Pythonを使用してWeb APIとやり取りする際、特に複数のリクエストを処理する場合、遅延に直面することがよくあります。ファイルのダウンロード、データのスクレイピング、APIへのリクエストなど、各タスクが完了するのを待つことで、全体の進行が大幅に遅くなることがあります。ここで非同期プログラミングが役立ちます。Pythonエコシステムにおいて、これに最適なツールの一つがaiohttpライブラリです。

非同期プログラミングに不慣れな方もご安心ください!簡単な言葉で説明し、aiohttpがどのようにウェブリクエストを合理化し、より迅速かつ効率的にするかを解説します。

さらに深く掘り下げる前に、すべての開発者が直面する問題に触れましょう:APIテストです。大多数のチームと同様に、あなたもおそらくPostmanを使用していることでしょう。

その気持ち、分かります,[Postman](https://www.postman.com/)は信頼できるツールです。しかし、正直に言うと、毎年その魅力が減ってきているのを私たちは皆感じているのではないでしょうか?にもかかわらず、あなた

元記事を表示

【Python】ダイクストラ法 + 可視化スクリプト

ダイクストラ法 (グラフ中のどのエッジもそこを通るコストが0以上であるときに、ある始点ノードから他のノードに至る経路でコストが最小のものを特定できるアルゴリズム) の Python スクリプトとそれを可視化する Python スクリプトです。

### 参考文献
– [Dijkstra’s Algorithm](https://nw.tsuda.ac.jp/lec/dijkstra/): ダイクストラ法の実装はこちらの津田塾大学の新田先生のページを前面的に参考にさせていただきました。

### スクリプト

– [CookieBox26/dijkstra.py](https://gist.github.com/CookieBox26/2a0009a447328cd93a11516ea86be4ad): こちらの Gist に以下の2つの Python ファイルがあります。
dijkstra.py: ダイクストラ法で最適経路を解くスクリプトです。優先度付きキュー (Python 標準の queue.PriorityQueue; 二分ヒープのはず) を用いた、計算量が

元記事を表示

フィボナッチ数列をプログラムで生成(C言語・Python)

# フィボナッチ数列とは

フィボナッチ数列とは、
$$1,1,2,3,5,8,13,21,\cdots$$のように、一つ前の数字と足し合わせていく数列のことです。
最初に「1」が2つあると思いますが、次のように考えてみてください。
$$0,1,1,2,3,5,8,13,21,\cdots$$

例えば今$n$番目の数に居るとき、次の数にするには、

“`math
a_{n+1} = a_n + a_{n-1}\;(n\geqq0)\quad\cdots\quad{\color{red}\clubsuit}
“`

という計算式を立てればプログラムでも組めそうですよね!

例)3 = 2 + 1
例)5 = 3 + 2

今回は今立てたこの式を元にC言語でフィボナッチ数列生成プログラムを組んでいこうと思います。

参考 : [フィボナッチ数列とは?黄金比と一致する証明や一般項の求め方をわかりやすく解説](https://terakoya.ameba.jp/a000001464/)

# C言語でプログラミング

まず、C言語の書き方を知っている必要がありますが、そこに関しては今回説

元記事を表示

Rye vs uv どっちを使うべき?

## 対象読者

– モダンなpythonプロジェクト管理ツールを検討している人
– Ryeとuvをなんとなく知っている人

## 書かないこと

– Ryeやuvの導入方法・使い方

## Rye vs uv

先日書いた記事でpythonのプロジェクト管理ツールとその中でもモダンなRyeとuvの導入と基本的な使い方について書きました。その時点で、私自身「Ryeとuvはどう違って、どっちが良いんだ?」と疑問を感じたまま書いていました。
そこでuvとRyeの関係性やどっちを使うべきかを調べてみました。

### そもそも現在は同じ会社が管理している

Ryeとuvは現在、Astralという企業が開発主体になっています。Astral社はFastAPIなどでよく使われるuvicornなどの開発も行っている会社だそうです。
また現在幅広く使用されているPython用フォーマッターであるRuffの開発も行っています。

元々、Ryeは別の開発者がやっていましたが、非常に興味深いアプローチだったのでAstral社がその開発を引き継いだそうです。
uvはこれとは別の文脈で、高速な仮想環境構築を目指

元記事を表示

効率的な家計管理のための実践的Pythonガイド

こんにちは!家計簿管理のための高度なPandasの使い方について、わかりやすく解説していきます。サンプルデータを使って、実践的な例を交えながら説明していきますので、ぜひ最後までお付き合いください。

まずは、50行のサンプルデータを作成しましょう。このデータを使って、以降の章で様々な分析と可視化を行っていきます。

“`python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# 日本語フォントの設定
plt.rcParams[‘font.family’] = ‘MS Gothic’

# サンプルデータの作成
np.random.seed(42)
dates = pd.date_range(start=’2024-01-01′, periods=50)
categories = [‘食費’, ‘住居費’, ‘光熱費’, ‘交通費’, ‘娯楽費’, ‘医療費’, ‘教育費’, ‘衣服費’, ‘雑費’, ‘収入’]
data = {

元記事を表示

Polarsの速度比較(vstack vs concat)

Polarsでは、concatはメモリコピーをして、vstackはメモリコピーをしないようです。

https://qiita.com/hkzm/items/8427829f6aa7853e6ad8#4-vstack-concat-%E3%81%A9%E3%81%A1%E3%82%89%E3%82%92%E4%BD%BF%E3%81%86%E3%81%8B%E3%81%AF%E5%BE%8C%E7%B6%9A%E3%81%A7%E3%81%AE%E3%82%AF%E3%82%A8%E3%83%AA%E6%AC%A1%E7%AC%AC

バージョン1.12.0で確かめてみました。

## 比較

16 x 16の`df1`を`n`回結合してみます。
メモリコピーしていれば、結合回数の自乗で計算時間が増えていくはずです。

“`python
import numpy as np
import polars as pl
from timeit import timeit

df1 = pl.DataFrame(
np.arange(256).reshape(16, -1),

元記事を表示

OTHERカテゴリの最新記事