Pythonでできること色々。

# はじめに
　Pythonに関連して投稿した記事をまとめる。
 Pythonはライブラリが充実しており、何かやりたいことがあれば、ほとんどの場合に対応できる便利な言語。普段組み込みのC言語でROM.RAMや処理時間を常に意識してガリガリコード書いている自分からすると、数行でやりたいことが書けちゃうPythonはストレスフリーで勉強していても楽しい。

# 目次

分類|概要 
---|---
[エクセル処理・PDF処理・ファイル処理](#エクセル処理pdf処理ファイル処理)|PandasやOpenpyxlでのエクセル処理や、テキストファイルの読み書き等。
[グラフ処理](#グラフ処理)|matplotlibでのデータのグラフ化。
[仕事効率](#仕事効率)|仕事で使うとちょっと便利な小技。
[ファイナンス](#ファイナンス)|yfinanceなど、株関連。
[Kivy関連](#kivy関連)|GUIライブラリKivyの使い方。
[Androidアプリ関連](#androidアプリ関連)|Kivyを使ったアンドロイドアプリ。
[Raspberrypi関連](#raspberrypi関連)|電子工作関連。MicroPython。
[QiitaAPI関連](#qiitaapi関連)|QiitaAPIを使った情報収集。
[文字列処理](#文字列処理)|文字列や数値の整形、変換処理。
[画像処理](#画像処理)|Pythonでの画像処理。
[Pandas関連](#pandas関連)|Pandas、表計算関連
[Python基本](#python基本)|Python文法の基本。
[Tips](#tips)|よく使う小技。



## エクセル処理・PDF処理・ファイル処理
+ [ExcelやCSVファイルのデータ処理はPandasで。](https://qiita.com/tapitapi/items/0a0a84a6db46dcc07921)
+ [OpenPyXLでExcelファイル読み書き。](https://qiita.com/tapitapi/items/cdeb7a97ed0add7201b5)
+ [PythonでPDFファイルの読み書きマージやパスワード解除したりする。](https://qiita.com/tapitapi/items/6b1982467f0345f3da67)
+ [PDFから表を抽出し、DataFrameやMarkDown形式に加工する。](https://qiita.com/tapitapi/items/b77c6b23f5c56933bafe)
+ [Pythonのファイルアクセスから圧縮・解凍まで。](https://qiita.com/tapitapi/items/54f39d88bed44fabab8c)
+ [QiitaのAPIを使って集計結果をExcelへ出力する。](https://qiita.com/tapitapi/items/2a59a50a8b968c3be8a0)

[戻る](#目次)

## グラフ処理
+ [Pythonのmatplotlibでエクセル表のデータを簡単にグラフにする。](https://qiita.com/tapitapi/items/be2362d2d700d9211b28)

[戻る](#目次)

## ファイナンス
+ [yfinanceでYahoo!ファイナンスの情報を取得する。](https://qiita.com/tapitapi/items/9459362d8aee25137647)
+ [yfinanceで取得した株価をグラフにする](https://qiita.com/tapitapi/items/3dbc9532d7ebd204d444)
+ [東証上場銘柄の一覧を作ってみる。](https://qiita.com/tapitapi/items/640e4fdfd15d3f056ec8)
+ [世界の通貨為替一覧](https://qiita.com/tapitapi/items/40199377e0ebd61db491)
+ [時価総額Top10の今と昔。](https://qiita.com/tapitapi/items/b34ee0167d13a1689e7b)
[戻る](#目次)

## 仕事効率
+ [Pythonでクリップボードをリンク付き(HTML形式)加工する。](https://qiita.com/tapitapi/items/d0a1df5f9f74aefa97d3)
+ [SharePointのURLエンコードかかったリンクを日本語に戻す（Python版）](https://qiita.com/tapitapi/items/1acf508012eca079ad4a)
+ [Python上でPowerShellを実行する](https://qiita.com/tapitapi/items/fbfe6b537b8ff8d47db0)
+ [PythonでUSB機器リストを取得して有効・無効化する。](https://qiita.com/tapitapi/items/87eacf67c9347fa90e1f)

[戻る](#目次)

## Androidアプリ関連
+ [PythonでAndroidアプリを作る。](https://qiita.com/tapitapi/items/e91d67d59ed10caa59f6)
+ [PythonでAndroidスマホの各種センサー情報を取得する。](https://qiita.com/tapitapi/items/51ddefc1dd8e810430c8)
+ [PythonでAndroidスマホのシリアル通信をする。](https://qiita.com/tapitapi/items/c431ec323aeab99261c9)
+ [PythonのKivyのカラーパレットを作ってみる](https://qiita.com/tapitapi/items/7c41dab03089ef9852fb)

[戻る](#目次)

## Kivy関連
+ [PythonのGUIライブラリKivyを使う](https://qiita.com/tapitapi/items/a4a4e3a7164afd922115)
+ [Kivyでシリアル通信アプリを作る。](https://qiita.com/tapitapi/items/f32560b1c8eec07c4837)
+ [Kivyで基本の電卓を作ってみた](https://qiita.com/tapitapi/items/e611837559d511749a7a)
+ [Kivyで「西暦・和暦・年齢・干支」変換電卓作ってみた。](https://qiita.com/tapitapi/items/876e728592165c83feed)

[戻る](#目次)

## Raspberrypi関連
+ [Raspberrypi pico（ラズパイピコ）を MicroPython でペリフェラル制御する。](https://qiita.com/tapitapi/items/c3c5e7530d49794489fb)
+ [Raspberry Pi のペリフェラル制御(GPIO/I2C/SPI)](https://qiita.com/tapitapi/items/db16b106c54a66c49606)
+ [Raspberry Pi のUARTを使う場合の注意点](https://qiita.com/tapitapi/items/a12192d034afac5e8dd2)
+ [Pythonのpyserialとthreadingでリアルタイムなシリアル通信をする。](https://qiita.com/tapitapi/items/1dd9c66c0dff061bcd82)

[戻る](#目次)

## QiitaAPI関連
+ [QiitaAPIを使って自分の記事の整理をしてリスト化する。](https://qiita.com/tapitapi/items/676cb94abdbed36d8cdd)
+ [PythonとQiitaAPIを使って投稿記事を画像ファイルごと保存する。](https://qiita.com/tapitapi/items/16a4ccf610a6e5d229ee)

[戻る](#目次)

## 文字列処理
+ [Pythonのf文字列](https://qiita.com/tapitapi/items/bb3e8fd01e2d2bda6321)
+ [replace/re.subで文字列変換](https://qiita.com/tapitapi/items/d0dda807fbc04df850b6)
+ [Pythonの検索処理 search match](https://qiita.com/tapitapi/items/f20b1033b5379982e9e5)
+ [Python文字列の比較や変換](https://qiita.com/tapitapi/items/471336bc79e341047abb)
+ [Pythonの日付・時刻処理](https://qiita.com/tapitapi/items/810de03b0f8ae2e27618)
+ [Pythonで数値・数値文字列・バイナリ変換](https://qiita.com/tapitapi/items/e8ea6eb9b23785c42f8f)
+ [Pythonでエンディアン変換](https://qiita.com/tapitapi/items/b72ea9d3c18bbeb85bc8)
+ [Python小ネタASCII⇔HEX文字列変換](https://qiita.com/tapitapi/items/2ee316af31094a37f3ec)
+ [re.compileは何に使う？](https://qiita.com/tapitapi/items/c8970210cc11aa00b33a)
+ [正規表現「?」の使い道](https://qiita.com/tapitapi/items/87ffcc457e8013ccc272)

[戻る](#目次)

## 画像処理
+ [Python画像処理のPillow 26選](https://qiita.com/tapitapi/items/b17181bb4947ddc14faf)

[戻る](#目次)


## Pandas関連
+ [PandasのDataFrameの初期化や結合](https://qiita.com/tapitapi/items/fe2324889267920587c0)
+ [Pandasの要素指定・置換](https://qiita.com/tapitapi/items/764440297cb9b1302b81)
+ [Pandasでよく使う23選](https://qiita.com/tapitapi/items/fdd86439840dfa96c312)
+ [Pandasのapplyを使えば表計算処理を簡単にできる。](https://qiita.com/tapitapi/items/b54f0448a7f7773cd173)
+ [ExcelやCSVファイルのデータ処理はPandasで。](https://qiita.com/tapitapi/items/0a0a84a6db46dcc07921)
+ [Pandasで日付処理する。](https://qiita.com/tapitapi/items/47595b08b060d3f0b9eb)

[戻る](#目次)

## Python基本
+ [Pythonのパッケージ取得](https://qiita.com/tapitapi/items/7541889773df6f21f742)
+ [Pythonの反復処理いろいろ](https://qiita.com/tapitapi/items/3390ddc167e1911953b2)
+ [Pythonの内包表記](https://qiita.com/tapitapi/items/30b9ee4d8b80b03741f5)
+ [Pythonのリスト操作と初期化](https://qiita.com/tapitapi/items/b579ffb7723e3310e211)
+ [Pythonの辞書(dictionary)の操作と初期化](https://qiita.com/tapitapi/items/796f7a21fa2d33e0f833)
+ [Pythonのスライスは便利。](https://qiita.com/tapitapi/items/238b157cbfc2b477979f)
+ [Pythonの例外回避。](https://qiita.com/tapitapi/items/66b6597d2619e343ae76)
+ [Pythonでライブラリやクラスの使い方を知りたい。](https://qiita.com/tapitapi/items/b782df48b7ab13c3cd1e)

[戻る](#目次)

## Tips
内容|文法
---|---
[分離する](#分離する)|split/ splitlines()/ re.split()
[リストの重複をなくす](#リストの重複をなくす)|list(set('リスト'))
[nanを一括変換する](#nanを一括変換する)|df=df.fillna('変換文字列')
[nanを近接する値で一括変換](#nanを近接する値で一括変換)|df = df.ffill()#前方<br>df = df.bfill()#後方


[戻る](#目次)

### 分離する
```python:
#--------------------------------------
# 分離:str.split(sep=None, maxsplit=-1)
#--------------------------------------
str = 'a iu e o\n ka ki  kuke ko'
lis = str.split()	#改行や空白文字で分離
print(f'# {lis=}')
# lis=['a', 'iu', 'e', 'o', 'ka', 'ki', 'kuke', 'ko']

str = 'あ,いう,え,お,,か,き,,く,,,け,こ'
lis = str.split(',')	#特定文字で分離連続する場合は、空白文字として分離
print(f'# {lis=}')
# lis=['あ', 'いう', 'え', 'お', '', 'か', 'き', '', 'く', '', '', 'け', 'こ']

str = 'さ-し-す-せ-そ'
lis = str.split('-',2)	#分離回数指定
print(f'# {lis=}')
# lis=['さ', 'し', 'す-せ-そ']

#--------------------------------------
# 改行分離:str.splitlines(keepends=False)
#--------------------------------------
str = 'aiueo\nかきこけこ\n\nさしすせそ\nたち つてと'
lis = str.splitlines()
print(f'# {lis=}')
# lis=['aiueo', 'かきこけこ', '', 'さしすせそ', 'たち つてと']

#--------------------------------------
# 正規表現分離:re.split(pattern, string, maxsplit=0, flags=0)
#--------------------------------------
import re
str  = 'あ,い-う.え|お'
lis = re.split('[.,-|]',str) #[]で複数パターン
print(f'# {lis=}')
# lis=['あ', 'い', 'う', 'え', 'お']
str = 'あ,い,,う,,,え,,,,お'
lis = re.split(r',+',str) #,を複数回
print(f'# {lis=}')
# lis=['あ', 'い', 'う', 'え', 'お']
```
[Tipsへ戻る](#tips)

### リストの重複をなくす
```python:
lis =[0,1,2,3,4,5,6,7,8,9,1,1,1,0,0,0,4,5,6,7,11,12,13,10,0]
lis = list(set(lis)) # set()で辞書化して、ダブりをなくして、それを list()でリスト化
print(f'# {lis=}')
# lis=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
```
[Tipsへ戻る](#tips)

### nanを一括変換する
```python:
import pandas as pd
import numpy as np

df = pd.DataFrame(
	{'A':[0,1,2]
	,'B':[np.nan]*3})
print(df)
#    A   B
# 0  0 NaN
# 1  1 NaN
# 2  2 NaN

df=df.fillna(0)
print(df)
#    A    B
# 0  0  0.0
# 1  1  0.0
# 2  2  0.0
```
# nanを近接する値で一括変換
```python:
df = df.ffill() # 前方の値で埋める
df = df.bfill() # 後方の値で埋める
```

[Tipsへ戻る](#tips)