独学Python学習記録

これからの会社経営は「統計学」の時代だと思い知らされ、独学でPythonの勉強に励むことになりました。その記録をあとで辿るためにブログとして自分の記憶の定着と皆さんへのお知らせとなればと、、、幾つになっても「学び」は大事なことですね。

Numpy(ナムパイ)って何?

NumPyは、Pythonで数値計算をするときに、とっても便利な道具箱みたいなものです。

例えるなら、算数セット!

小学生のときに算数セットを使ったよね?NumPyは、ちょうどあれに似ています。NumPyには、たくさんの便利な道具(関数)が入っていて、これを使うと、Pythonで複雑な計算を簡単に、しかも速くできるようになります。

NumPyのすごいところ

  1. 配列: NumPyの最大の強みは、配列という特別なデータ形式を使えることです。配列は、たくさんの数字をまとめて扱える、魔法の箱みたいなものです。例えば、クラスみんなのテストの点数を一つの配列に入れて、平均点を出したり、一番高い点数を探したりするのが、とても簡単にできます。
  2. 速い計算: NumPyは、裏で頑張って、計算をものすごく速くしてくれます。普通のPythonで計算すると時間がかかるようなことでも、NumPyを使えばあっという間です。
  3. 便利な道具: NumPyには、数学の関数がたくさん入っています。例えば、三角関数(sin, cos, tan)や、統計の関数(平均、分散)など、いろいろな計算に必要な道具が揃っています。

NumPyでできること

  • グラフ作り: NumPyで計算した結果を使って、グラフを簡単に作ることができます。
  • ゲーム作り: ゲームのキャラクターの動きを計算したり、ゲームの背景を作ったりするのに役立ちます。
  • データ分析: たくさんのデータを分析して、新しい発見をしたり、未来を予測したりすることができます。

まとめ

NumPyは、Pythonで数値計算をするときの、最強の味方です。NumPyを使いこなせば、できることがぐんと広がります。

Numpyで表を作る

import numpy as np
df=pd.DataFrame(np.array([[1,2,3],[4,5,6],[7,8,9]]),
        columns=[‘col1′,’col2′,’col3’],
        index=[‘index01′,’index02′,’index03’])
df

pandas(パンダス)ってなに?

pandasは、Pythonでデータを分析したり、加工したりするときに、とっても便利な道具箱みたいなものです。

例えるなら、スプレッドシート!

Microsoft ExcelやGoogle スプレッドシートを使ったことがあるかな?pandasは、ちょうどあれに似ています。pandasを使うと、表形式のデータ(例えば、クラスの成績一覧)をPythonで簡単に扱えるようになります。

pandasのすごいところ

  1. DataFrame: pandasの最大の強みは、DataFrameという特別なデータ形式を使えることです。DataFrameは、Excelのシートみたいに、行と列でデータが整理されたものです。これを使うと、たくさんのデータを分かりやすく整理したり、必要なデータだけを取り出したり、いろいろな計算をしたりするのが、とても簡単にできます。
  2. データ加工: pandasには、データを加工するための便利な道具(関数)がたくさんあります。例えば、データの並び替え、データの追加、データの削除など、いろいろな操作を自由自在にできます。
  3. データ分析: pandasを使うと、データの平均や合計を計算したり、グラフを作ったり、データの中から面白いパターンを見つけたりすることができます。

pandasでできること

  • 家計簿管理: 毎日の支出や収入を記録して、集計したり、グラフを作ったりできます。
  • クラスの成績分析: クラスみんなのテストの点数をまとめて、平均点を出したり、点数分布を調べたりできます。
  • スポーツデータ分析: スポーツの試合結果や選手の成績を分析して、チームの戦略を考えたり、選手の育成に役立てたりできます。

まとめ

pandasは、Pythonでデータを分析したり、加工したりするときの、最強の味方です。pandasを使いこなせば、データをもっと楽しく、もっと深く理解することができます。

pandasで表を作る

df=pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]],
        columns=[‘col1′,’col2′,’col3’],
        index=[‘index01′,’index02′,’index03’])
df

行のカラム名及び縦のインデックス名を取得

命令は簡単で、「df.columns」でカラム名を取得でき、「df.index」でインデックス名が取得可能です。

行のカラム名を変更する

行のカラム名を変更したいときには、「df=df.rename(columns={‘col1′:’A’})」と記述することによって、カラム名の「col1」と「A」という名前に変更することが可能です。

1列のカラムのみを抽出する

上の「A」列のみを抽出したいときには、df[‘A’]でA列のみを取得可能になります。

data関数ってなに?

Pythonの専門家ですね。Pythonの “data関数” についてお答えします。”data関数” という特定の名前の関数は、Pythonには存在しません。しかし、Pythonでデータを扱うための様々な関数や機能は存在します。

データの種類

Pythonで扱うデータには、様々な種類があります。

  • 数値: 整数 (int)、小数 (float)
  • 文字列: 文字の並び (str)
  • 真偽値: True または False (bool)
  • リスト: 複数のデータを順番に並べたもの (list)
  • 辞書: キーと値のペアをまとめたもの (dict)

データを扱うための関数

Pythonには、これらのデータを扱うための様々な関数があります。

  • 型変換関数: データの種類を変換する関数 (int(), float(), str(), bool(), list(), dict())
  • 文字列操作関数: 文字列を操作する関数 (len(), upper(), lower(), split(), replace())
  • リスト操作関数: リストを操作する関数 (append(), insert(), remove(), sort())
  • 辞書操作関数: 辞書を操作する関数 (keys(), values(), items(), get())

例:リストと辞書

例えば、クラスの生徒の名前と成績をリストや辞書で表現できます。

Python

# リストの場合
names = ["田中", "佐藤", "鈴木"]
scores = [80, 90, 85]

# 辞書の場合
class_data = {
    "田中": 80,
    "佐藤": 90,
    "鈴木": 85
}

これらのデータに対して、様々な関数を使って、データの追加、変更、削除、検索などを行うことができます。

まとめ

Pythonには、”data関数” という名前の関数はありませんが、様々な種類のデータを扱うための便利な関数がたくさんあります。これらの関数を組み合わせることで、Pythonで様々なデータ処理を行うことができます。もし、具体的なデータ処理の内容があれば、教えていただけますでしょうか?より詳しく、適切な関数や方法を提案できます。

辞書型ってなんですか?また、辞書型とリスト型の違いはなんですか?

辞書型って?

辞書型は、単語とその意味が書いてある辞書のように、「キー」「値」 をペアで保存するデータ型です。
例えば、クラスメイトの「名前」と「好きな科目」を記録したいとします。
Python

data = {"田中太郎": "数学", "佐藤花子": "国語", "鈴木一郎": "理科"}

このように、{ } の中に キー: 値 のように記述します。

  • "田中太郎""佐藤花子""鈴木一郎"キー です。
  • "数学""国語""理科" です。

辞書型では、キーを使って値を取り出すことができます。
Python

print(data["田中太郎"])  # 出力: 数学

辞書型とリスト型の違い

リスト型は、データを順番に並べたものです。
Python

names = ["田中太郎", "佐藤花子", "鈴木一郎"]

リスト型では、番号(インデックス)を使ってデータを取り出します。
Python

print(names[0])  # 出力: 田中太郎

違いをまとめると

特徴辞書型リスト型
データの保存方法キーと値のペア順番に並べる
データの取り出し方キーを使う番号(インデックス)を使う
順序順序は重要ではない順序が重要

Google スプレッドシートにエクスポート

いつ使う?

  • 辞書型: データに名前を付けて管理したいとき (例: 住所録、商品カタログ)
  • リスト型: データを順番に扱いたいとき (例: テストの点数、ランキング)

例:ゲームのアイテム

ゲームのアイテムを管理したいとします。

  • 辞書型: アイテム名と効果をペアで保存 Pythonitems = {"魔法の杖": "攻撃力アップ", "回復薬": "HP回復"}
  • リスト型: アイテムを順番に保存 Pythonitems = ["魔法の杖", "回復薬", "盾"]

このように、状況に応じて使い分けましょう。

関数のprintとreturnの違いは?

print()は結果を表示するだけの関数で、return()は値を表しているので、関数の結果として出来きたものであれば他で使うことが出来ます。
例えば、
def add(a,b):
print(a+b)
1+add(2,3)
という指示では、最初のprint(a+b)では値を5と返してくれますが、
下の1+add(2,3)ではエラーが返されます。
そのときには、
def add(a,b):
return a+b
1+add(2,3)
では、6という値を返してくれます。

練習問題−1

りんごとみかんの単価がそれぞれ200円と50円の時、りんご、みかんの購入個数apple,mikanを引数とする、価格を求める関数kakakuを定義せよ。

回答

def kakaku(apple,mikan):
   return 200*apple+50*mikan
kakaku(2,3)

四則計算を行う

基本的な計算の入力
1、掛け算は「*」(シフトキーを押しながら「*」を押す
2、割り算は2種類
  「//」整数の値のみを返す(13//3)であれば、「4」と返す
  「/」小数点までの値を返す (13/3)であれば、「4.3333333・・・」と返す
3、割り算の余りだけを知りたい時は 「%」キーを使用(13%3)であれば、あまりの「1」という値を返す
4、累乗は「**」と掛け算の「*」を2回にする

データの型

分類内容
int整数3
float小数3.5
listリスト[1,2,3]
tupleタプル(1,2,3)
bool真偽True,False
str文字列‘abc’

※データの型を調べるには「type」という関数を使います。
※「リスト」と「タプル」の違いは?

リストとタプルの違い

Pythonのリストとタプルはどちらも複数の要素を格納できるデータ構造ですが、いくつかの重要な違いがあります。

1. 変更可能性:

  • リスト: 変更可能です。要素の追加、削除、変更が可能です。
  • タプル: 変更不可能です。一度作成すると、要素の追加、削除、変更はできません。

2. 構文:

  • リスト: 角括弧 [] で囲んで要素を記述します。例: my_list = [1, 2, 3]
  • タプル: 丸括弧 () で囲んで要素を記述します。例: my_tuple = (1, 2, 3)

3. 用途:

  • リスト: データの集合を表現し、要素の変更が必要な場合に適しています。
  • タプル: データのレコードや固定されたコレクションを表現し、要素の変更を防ぎたい場合に適しています。

変数と代入

変数について、
一度使った値を一時的に保存しておく(「入れ物」のイメージ)ときに「変数」を用います。
変数に出力(計算)結果を保存しておくことで、後で必要になったときにその値を再利用できます。変数は数学のx,y.zのようにアルファベット単体だけでなく、後で見たときに意味がわかりやすいように、アルファベットの文字列にしておくことが多くあります。(リンゴの値段なら「apple」などとします。

代入について、
変数名につづけて「=」と値を指定すると、変数に値を格納できます。変数に値を代入しておくと、後でその変数名を指定するだけで、値を取り出すことが出来ます。
例)
x=10
y=2*3+10
x +y
に対する、答えは「20」となります。

「リスト(配列)とは?」

次のような数字を格納したい場合、「5、4、3、2、1」は
ab=[5,4,3,2,1]と記述することによって
abという変数名に「5、4、3、2、1」という数字を配列することが出来ます。
各要素はab[0],ab[1],ab[2]というように記録されます。
※注意点=リストの最初は「0」番から始まります。

文字と文字列

Pythonでは、「’」(シングルクォート)や「”」(ダブルクォート)で囲った部分を文字、文字列として処理されます。
また、複数の文字列を「+」で繋ぐことも出来ます。
‘abc’+’def’と繋ぐと「abcdef」と連結されます。

組込み関数とは?

最初からpthonに組み込まれている関数のこと。前出のtype()や、str()などの関数のことです。

関数名機能
print()指定された値を画面に出力します。print("Hello, world!") は “Hello, world!” を出力します。
type()オブジェクトのデータ型を返します。type(3) は <class 'int'> を返し、 type("hello") は <class 'str'> を返します。
len()オブジェクトの長さ(要素数)を返します。主に文字列、リスト、タプルに使用されます。len("hello") は 5 を返し、 len([1, 2, 3]) は 3 を返します。
range()指定された範囲の整数のシーケンスを生成します。 for ループでよく使用されます。range(5) は 0 から 4 までの整数を生成します。
list(), tuple(), dict(), set()それぞれリスト、タプル、辞書、セットを作成します。データ構造を扱う上で基本的な関数です。list([1, 2, 3]) はリスト [1, 2, 3] を作成します。
int(), float(), str(), bool()それぞれ整数、浮動小数点数、文字列、真偽値に変換します。データ型の変換に必要です。int("3") は文字列 “3” を整数 3 に変換します。
sum(), max(), min()それぞれ合計値、最大値、最小値を計算します。主に数値データに使用されます。sum([1, 2, 3]) は 6 を返します。
sorted()指定されたオブジェクトをソートした新しいリストを返します。sorted([3, 1, 2]) はソートされたリスト [1, 2, 3] を返します。

range関数とlist関数

range(a)は「0からa未満の整数の範囲」を認識する関数ですが、そのまま実行しただけではそれらの整数を表示することはせず、list()と組み合わせる必要があります。
例)list(range(10)というコードは
[0,1,2,3,4,5,6,7,8,9]となります。

練習問題−2

ある文字列にinput関数で入力できるようにし、その値を変数aに格納し、さらにaの値をprint関数で「aに⚪︎⚪︎が入力されました」(⚪︎⚪︎は入力された文字)と表示できるようにしなさい。

回答

input
a=input()
print(‘aに「’+a+’]が入力されした’)

比較演算子と論理演算子

a=3は「aに3を代入する」ことを表しましたが、a==3(=を2つつなげる)は「aと3が等しい」ことを表します。また、a<=3は「aが3以下」であることを表します。このように2つの値の関係性を表した記号を「比較演算子」と言い、実行すると(TrueまたはFalse)を出力します。

比較演算子内容
a==baとbは等しい
a!=baとbが異なる
a<baはbより小さい
a>baはbより大きい
a<=baはb以下である
a>=baはb以上である
a in baはリストbに含まれる
a not in baはリストbに含まれない
論理演算子内容
A and BAとBが共に正しいときのみTrue
A or BAとBの少なくとも一方が正しいときTrue
not AAが誤りのときTrueを返す

CSVファイルをpythonに読み込む

Googleコラボに新しいファイルを作成し、pandasでCSVファイルを読み込む方法は

import pandas as pd
df=pd.read_csv(“/content/20240101_0131.csv”)
df

()ないの中にGoogleコラボに移動させたファイルのパスを挿入することによってCSVファイルがコラボに読み込まれます。

繰り返し(for文)について

for i in range(a,b) #a以上b未満の整数iについて
  行う処理内容 #行頭字下げする
同じ内容の処理を数値を変えながら行いたいとき、下のように書くには非常に面倒です。
print(0)
print(1)
print(2)
print(3)
print(4)

これを下記のように記述すれば簡単に出力可能になります。
a=[0,1,2,3,4]
for i in range(0,5):
print)a[i]

結果を横に並べて表示する方法

出力結果を縦ではなく、横方向に表示する方法は、
print((出力内容),end=’,’)
end=’,’はシングルクォーとの間に半角でカンマを入れる。

練習問題−3

5人のテストの点数(a=[10,20,30,40,50])の和souwaをfor文で求め、さらに平均点heikinを求めよ。

回答

a=[10,20,30,40,50]
souwa=0 #変数souwaを用意して初期値0を入れておきます。
for in range(0,len(a)): #0〜len(a)までを範囲とします。
souwa =souwa+a[i]
print(souwa)
heikin=souwa/len(a)
print(‘合計点は’ +str(souwa)+’で、平均点は’str(heikin)+’です’)

目次