Python関連のことを調べてみた2021年10月01日

Python関連のことを調べてみた2021年10月01日
目次

初心者向け)csvファイルをpandasで読み込もうとしたときに発生するエラーの解決方法

## 文字コードの違いなんてよく理解していないし、ほとんど気にもしてないのが初心者の本音(それは私です)

WindowsPCのExcelから出力したcsvファイルを、jupyter notebookなどを利用してpandasで読み込もうとすると’utf-8がで読めないよ’的なエラーが発生しました。

“`
import pandas as pd
df = pd.read_csv(‘nantoka.csv’)
“`

‘nantoka.csv’はExcelから入力してcsv形式で出力したファイルという想定です。
上記だとエラーになりpandasがcsvファイルを正しく読み込まれず、以下のようなエラーメッセージが表示されました。

“`
UnicodeDecodeError: ‘utf-8′ codec can’t decode byte 0x95 in position 0: invalid start byte
“`

原因はPythonでは’utf-8’という文字コードを扱うことが標準ですが、WindowsPCで動くOffice製品でつくらたファイルは文字コードが’932’

元記事を表示

コンピュータとオセロ対戦11 ~機械学習、方針決定~

https://qiita.com/tt_and_tk/items/068f2afde6db637e189f

[前回](https://qiita.com/tt_and_tk/items/9c4a6ed37254381a4f1c)

# 今回の目標
sklearnを使い、機械学習対戦オセロを作りたいと思います。
いくつかの方針を考えましたが、いずれも手順としては

1. 教師データを作成する
1. 教師データから学習する
1. 正解率を確認し、方針の評価をする

という三段階で行いました。
具体的な説明は後ほど行います。

# ここから本編
## 方針1 1hand_2eslect

:::note warn
この方法は上手くいきませんでした。
:::

オセロには様々な状況があり、例えば今の状態から置ける場所も全くなかったり一通りあったり二通りあったり三通りあったりします。
そこで、常に「一番多くひっくりかえせる場所」「二番目に多くひっくりかえせる場所」のどちらかにしか置かないと仮定し以下のアルゴリズムを考えました。またこの時、対戦相手が異常に弱かったり強かったりした場合、正確なデ

元記事を表示

コンピュータとオセロ対戦10 ~Pythonでオセロ~

https://qiita.com/tt_and_tk/items/068f2afde6db637e189f

[前回](https://qiita.com/tt_and_tk/items/79260b0859cd3a60062b)

# 今回の目標
今後機械学習などでPythonを使うので、まずは普通にオセロを目指します。
といってもC言語で作ったプログラムの丸写しです。
# ここから本編

## グローバル変数
timeは試合時間表示のためにインポートしました。必須ではないです。
「PLAYER = BLACK」は後ほど使うためです。これも今回は必須ではないです。

“`osero.py
from time import time

#define
NONE = 0
WHITE = 1
BLACK = 2
SIZE = 8
PLAYER = BLACK
# PLAYER = WHITE
NUM = 1000

board = [[NONE for i in range(SIZE)] for i in range(SIZE)]
turn = BLACK
“`

## printb

元記事を表示

SyntaxError: (unicode error) ‘utf-8’ codec can’t decode bytes in position 0-1: unexpected end of data

突然、pandas のエラーが発生した。
SyntaxError: (unicode error) ‘utf-8’ codec can’t decode bytes in position 0-1: unexpected end of data

> pip uninstall pandas
> pip install pandas

で対応した。

原因は分かりませんが、突然のエラーでした。参考までに。

> Traceback (most recent call last):
File “.\RealTime_object_detect.py”, line 5, in
import pandas as pd
File “C:\Users\e13736\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\__init__.py”, line 51, in
from pandas.core.api import (
File “C:\U

元記事を表示

React ⇒ Netlify ⇒ Lambda ⇒ Python ⇒ MySQLどこまでいけるんだろう

# タイトルの件

妄想してみました。
どこまで出来るか試してみたいと思います。

# React ⇒ Netlify

いつものように`create-react-app`

“`
npx create-react-app プロジェクト名 –template typescript
“`

いつものように`yarn start`でReact初期画面を`localhost:3000`で表示されることを確認します。

“`
cd プロジェクト名
yarn start
“`

gitにコミット&プッシュ
※git@github.comXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXは、後述のGitHubで新しいリポジトリ作成の際に表示されるものを入力します。

“`
git init
git remote add origin git@github.comXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
git push -u origin master
“`

Githubで新しいリポジトリを作成した際に表示されるURLみたいなやつ。

![im

元記事を表示

Python matplotlibのhist(bins=int)とRのhist(breaks=integer)の違い

Pythonの`hist(bins=int)`とRの`hist(breaks=integer)`。いずれも、区間数を指定すると区間幅の設定が自動で行われる機能である。しかし、 **区間の上限下限の設定が異なる。**

## R

breaksが数値の場合(`hist(VEC,breaks=BREAKS)`)、集計範囲は

“`R
pretty(range(VEC), n=BREAKS)
“`

によって(おおよそ100やら1000やらの単位になるよう)算出される[^1]。

## Python (matplotlib)

binsが数値の場合(`plt.hist(VEC,bins=BINS)`)、集計範囲は

“`py
(min(VEC), max(VEC))
“`

によって算出される[^2]。上限下限を切りの良い数値にしたい場合、たとえば

“`py
plt.hist(VEC,bins=BINS,range=(-1000,1000))
“`

のように明示的にrange=を指定する必要がある。

## 終わりに

特に拡大比率を変えて複数のヒストグラムを描く場合は、分

元記事を表示

[Python] 別ディレクトリにある同じ名前のcsvファイルを自動結合した。

# 課題内容

以下のように、同じディレクトリ配下にサブディレクトリが二つ。
サブディレクトリの中にあるファイル名は同一だが、中身は異なる。
ファイル名が同一のものだけを結合して出力したい。
\#備忘録なので、コードの正確性, 解説の精度に関してはご容赦ください。

**想定するディレクトリ状況**
>Main_dir/
 ├ sub_dirA/
 │  ├ file1.csv
 │  └ file2.csv
 └ sub_dirB/
     ├ file1.csv
     └ file2.csv

**求める結果**
>Main_dir/
 ├ sub_dirA/
 │  ├ file1.csv
 │  └ file2.csv
 ├ sub_dirB/
 │   ├ file1.csv
 │   └ file2.csv
 ├ file1.csv (dirAとdirBの結合結果)
 └ file2.csv (dirAとdirBの結合結果)

## 類似した既知の課題
下の様に、同じディレクトリ配下にある“`file1.csv“`と“`file2.csv“`を結合して、新たな

元記事を表示

SIGNATEの【練習問題】”天秤のバランス分類”をやってみた

###必要なライブラリのインポート
“`python
#必要なライブラリのインポート
import pandas as pd
“`

###ファイル取得
訓練データと検証データをそれぞれ読み取る。

“`python
#訓練データはtrain,検証データはtest
train = pd.read_table(‘train.tsv’, index_col=0)
test = pd.read_table(‘test.tsv’)
“`

testは後々の操作のためにindex_colを設定していない。

### データ形式の確認
##### train
![SS 2021-10-01 0.19.52.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551936/56c629db-8839-0cb8-933f-e7131f3e274e.jpeg)

##### test
![SS 2021-10-01 0.22.39.jpg](https://qiita-image-store.s3.

元記事を表示

データの前処理で使ったPythonコード(csv読み込み、データ確認)

# はじめに
データの前処理をする際に使用頻度の高かったコマンドのメモ。
詳細は、pd.read_csvとかで検索してください。
負荷の低い処理とかについては勉強中、もっと楽な書き方などあれば誰か教えてください。

以下に分けて書いていく予定。

– データの読み込み、確認 ←今回はこれ
– データの加工、書き出し
– 数値データの処理

環境:Python 3.8.5(Windows)、Anaconda、Spyder など

## カレントディレクトリを作業フォルダに移動
“`python
import os
os.chdir(“C:/Users/xxx … “)
“`
## csvの読み込み

### データフレームにcsvの内容を格納する
“`python
import pandas as pd

file = “./data/datafile.csv”

# zipやgzファイルのまま読み込みも可能
df = pd.read_csv(“./data/datafile.csv.zip”)
df = pd.read_csv(“./data/datafile.csv.gz”)

元記事を表示

画像解析実践入門_指紋の稜線分析 3(稜線間隔と方位のヒストグラム可視化)

https://qiita.com/kentarou524/items/7d26d6a1230fbfbb27ab

の続きです。

# 概要
指紋の稜線を分析します。前回の記事で稜線のラベリングまでしました。
最終的にはこの二値指紋画像をサブ領域に分割して、そこから特徴量(今回は稜線角度)を抽出。
指紋認識が可能か検討してみます。

#もくじ
– 1.ラベリング画像から獲得したい情報
– 2.稜線間隔と方位情報取得のアルゴリズム
– 3.アルゴリズムの関数化
– 4.ヒストグラムにて結果の確認

# 1.ラベリング画像から獲得したい情報

前回の記事でサブ領域に分割した指紋の稜線ラベル画像を作成しました。
そこら

– 1.稜線同士の間隔
– 2.サブ領域の稜線方位

を調べます。つまり下の画像でいうと

赤矢印が**稜線同士の間隔**
オレンジ矢印が**サブ領域の稜線方位**になります。

![fing_labeld.png](https://qiita-im

元記事を表示

ABC106 C – To Infinity から学んだ

https://atcoder.jp/contests/abc106/tasks/abc106_c

![abc106_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/5e7b0873-f002-a7f5-ca4e-94456905ddc2.png)
![abc106_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/b13b6fc6-2ef1-397c-4f0a-e4e99656e475.png)
![abc106_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/035b34f3-b5bc-f1eb-1e14-00416cde495d.png)
![abc106_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/

元記事を表示

pythonでcsvを読み込んで辞書型変数に格納

#はじめに
pythonでcsvを読み込み、辞書型の変数に格納するコードです。

######環境
python3.9.6

#CSVの読み込み

######CSVファイル(test.csv)

“`
1,2,3,4
apple,orange,banana,grape
りんご,おれんじ,ばなな,ぐれーぷ
“`

######CSV読み込んで辞書型変数に格納するpythonコード

“`python

import csv

#CSVファイルを開く
with open(“./test.csv”, “r”, encoding=”utf-8″) as csvfile:
#CSVファイルを辞書型で読み込む
f = csv.DictReader(csvfile, delimiter=”,”, doublequote=True, lineterminator=”\r\n”, quotechar='”‘, skipinitialspace=True)
#辞書型で出力
for row in f:
print(row)
“`

######出力結

元記事を表示

title

# title

## title

### title

元記事を表示

PythonのModuleNotFoundErrorにがっつりハマった話しと解決した方法

## 結果
結論的には実行対象のpythonのフォルダ名称とpythonファイル自体の名称がライブラリ名称とかぶっていたためそれらを読み込みにいってエラーが発生していた。

“`:教訓
ライブラリ名と同じフォルダ名やファイル名を使ってはいけない
“`

## 事象
普段Pythonそんなに触らないマンが久々にPythonでスクリプト書きたくなったのでPoetryを使って開発を始めた。
とあるライブラリを試してみることが目的だったため、適当にフォルダ名と実行対象のファイル名を対象のライブラリの名称に命名した。

その後サンプルのコード持ってきてライブラリインポートして実行したが `ModuleNotFoundError` で実行自体ができなかった。

## 調査

ライブラリをどこを参照しにいっているかは以下のコマンドをファイル冒頭に書き足すことで確認が可能

“`python:ライブラリ読み込み先確認
import sys
import pprint

pprint.pprint(sys.path)
“`

この文言を追記した上で実行すると以下のような配列が出力される。
(一

元記事を表示

指定の金額に対してどの硬貨を何枚出すのかを、LP問題として、PuLPを用いて求めてみる

指定の金額に対してどの硬貨を何枚出すのか(小学生用の計算ドリルに載っていそうな問題)を、LP問題として、PythonライブラリPuLPを用いて求めてみました。

## PuLP

PuLP: Pythonで線形最適化を行うライブラリ。
使用方法は、以下が詳しい。
https://docs.pyq.jp/python/math_opt/pulp.html

## 導入・バージョン確認・import

インストールは、Windowsのコマンドプロンプトを用いて、DOSコマンドでインストールする場合、

“`python
python.exe -m pip install pulp
“`

Jupyter内でインストールする場合は、

“`python
pip install pulp
“`

確認すると、

“`python
pip show pulp
“`

Name: PuLP
Version: 2.3
Summary: PuLP is an LP modeler written in python. PuLP can generate MPS or

元記事を表示

NetworkXのGalleryを順番に写経してみた

博士課程の研究にグラフ理論を学んでいく過程をここに記録する
学習の基本は写経である

[NetworkX](https://networkx.github.io/documentation/stable/index.html)の[Gallery](https://networkx.org/documentation/stable/auto_examples/index.html)を写経する

# Basic_Properties
2021年9月30日

“`
import matplotlib.pyplot as plt
import networkx as nx

G = nx.lollipop_graph(4, 6)

pathlengths = []

print(“source vertex {target:length, }”)
for v in G.nodes():
spl = dict(nx.single_source_shortest_path_length(G, v))
print(f”{v} {spl} “)
for p in spl:

元記事を表示

PythonでWEBスクレイピングから収集データのCSVダウンロードまで【初学者向け】

##はじめに
スクレイピングも一般的になってきて「よし!やってみよう!」と思う人が増えている一方で、いざプログラミングしようとサンプルのコードを見ても今一つ何をしようとしているかピンとこない人もいらっしゃるのではないでしょうか?

私も勉強中の身ではありますが、実際に書いたコードをもとに一行ずつ何をしているか解説・補足を入れた記事があるとPythonを始めたばかりの方には参考になるのではないと思いまして記事を作成しました。

スクレイピングの実装は、実際に動くものを手軽に実践できるので、Pythonの学習を始める取っ掛かりとしては最適だと思っています。
これからPythonを学ぶ方にとって、この記事が少しでも参考になれば幸いです。

##スクレイピングで大事なこと
手軽にできる一方で、スクレイピングを禁止しているサイトもあります。
規約で禁止されていない場合も、データの使用目的/取得時に配慮するべきことなどあります。

詳細は、下記記事が大変参考になりますので、実施する前に一読されることを強くお勧めいたします。
>[Webスクレイピングの注意事項一覧](https://qiita.co

元記事を表示

【AWS】PythonでAppSync(GraphQL)を叩く

#やりたいこと

とりあえずAppSync上にGraphQL APIは構築したが、まずはローカルで試してみたいorデータを一括登録したいという場合があると思いますので、boto3を使ってローカル環境でAPIを叩けるようなコードを作成しました。
ぜひ、ご活用ください。

#ソースコード

“`python
from requests_aws4auth import AWS4Auth
from gql import gql, Client
from gql.transport.requests import RequestsHTTPTransport
import pprint
import openpyxl
import sys
import json
import random
args = sys.argv

#一時的な利用なのでソースコード内に記述していますが、なるべく環境変数にしましょう。※補足参照
auth = AWS4Auth(
“アクセスキー”,
“シークレットアクセスキー”,
“リージョン”,
“appsync”,
)
headers =

元記事を表示

【AWS】PythonでExcelからDynamoDBへデータを一括登録する

#やりたいこと

以下のようなエクセルのデータをDynamoDBにpythonを使って一括登録していきます。
![スクリーンショット 2021-09-30 15.29.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/726987/db3e6dad-98eb-b864-9ec8-7296b4ff45e8.png)

#プログラム

AWSのライブラリ(boto3)とopenpyxlを使います。

“`python
import boto3
import json
import openpyxl
import datetime
import uuid

dynamodb = boto3.resource(‘dynamodb’)
table = dynamodb.Table(“Demo-table”)
dt_now = datetime.datetime.now()

print(dt_now)
wb = openpyxl.load_workbook(“サンプルデータ.xlsx”)

#シート名
ws

元記事を表示

Pythonのリスト内包表記をそろそろ書けるようになろう

`names = [user.get(‘name’) for user in users if user.get(‘age’) > 18]`
これを見ると、__ムカつきを覚える人__が対象です。

リスト内包表記の書き方を解説します。

## いつ使う:既存の配列から新たな配列を作る
まず、どんな実装をするときにリスト内包表記を使うか考えましょう。
ずばり、「既存の配列から新たな配列を作るとき」です。
リスト内包表記を使わないサンプルコードを見ていきましょう。
ユーザー情報のリストからユーザー名のみを抽出してユーザー名のリストを作成するコードです。

“`py
users = [{‘name’: ‘masaki’, ‘age’: 20}, {‘name’: ‘hiroshi’, ‘age’: 24}]
names = [] # =====ここから=====
for user in users:
names.append(user.get(‘name’)) # =====ここまで=====
“`

サンプルコードでここから~ここまで と書いているところが、リスト内包表記を使う

元記事を表示

OTHERカテゴリの最新記事