python⑨

9日目~

 

今日はすげーねむいぞ

レビューと運用説明でボロカスにやられたからだな。

説明がうまくなりたいw

 

 

文字の連結をとりあえず・・・。

pandasとmatplotlibとかはそのうち・・・

 

文字列の結合は、+でできますよと

name1 = 'tanaka'
name2 = 'takeshi'

print(name1 + name2)

▼実行結果

tanakatakeshi

 

'結合文字列'.join(リスト名)

こんな書き方でリストの中の文字列を結合するやり方もあると

names = ['tanaka','takeshi']

print(''.join(names)) #""の間の文字列でリストの文字列を結合する

▼実行結果

tanakatakeshi

 

format文で以下のような書き方も〇

print('my-name-is,{},under-name-is,{}'.format(name1,name2))

▼実行結果

my-name-is,tanaka,under-name-is,takeshi

 

 

文字を置き換える方法も

sentence = 'my name is tanaka yoshitake'

これを出力すると''で囲ってるものが表示されるが、.replaceとしてやると文字列を置き換えることができる

 

print(sentence.replace('tanaka','yoshida').replace('yoshitake','masaru'))

こんな感じで、置き換える対象の文字列を''で囲い上記のように置き換える文字を書く

▼実行結果

my name is yoshida masaru

 

こうなる

 

今日はここまで、眠い

 

 

 

 

 

 

python⑧

8日目!

 

昨日できなかったファイル読み込めないのができるようになった・・・。

結論からいうと、pd.read_csvと書くところを、pd.read.csvと書いていた・・・。

 

あとencoding指定方式でちょっと躓いたけど、shift-jisにして解決

 

いや~、詰まったら一回離れるのが一番だ。

 

import pandas as pd

df = pd.read_csv("pre24h_mx00.csv",encoding='shift-jis')

print(df)

感動的。これで行けた。

 

これをもとにデータ解析やってみるか~

 

python⑦

python7日目~

 

HHKBのキーボードきた!

英字配列だから慣れるまで2~3日かかりそう

 

今日も動画見ながら~と思ったけど、データ扱うのばかりで、飛ばすのもなんだからと思ってCSVファイル適当にダウンロードしてきて読み込もうとしたけどエラーばっかり・・・

 

 

その解決方法探しまくって早1時間?2時間?くらい。

 

C:\Users\gityo\PycharmProjects\test2\venv\Scripts\python.exe C:/Users/gityo/PycharmProjects/test2/test3.py
Traceback (most recent call last):
File "C:/Users/gityo/PycharmProjects/test2/test3.py", line 4, in <module>
df = pd.read.csv(r"C:\Users\gityo\Desktop\pre24h_mx00.csv")
File "C:\Users\gityo\PycharmProjects\test2\venv\lib\site-packages\pandas\__init__.py", line 258, in __getattr__
raise AttributeError(f"module 'pandas' has no attribute '{name}'")
AttributeError: module 'pandas' has no attribute 'read'

なんやねーーーーん

 

readがないなんて言われても・・・

どこからもってくんのや

 

明日になれば解決できることを祈ろう・・・

 

 

python⑥

pandas全然わからんかった

 

エクセルみたいな表記になるということは分かった。

データ解析用のライブラリとのこと

 

import pandas as pd

sr = pd.Series([1,2,3]) #Seriesは1次元のデータ。

print(sr)

df = pd.DataFrame([
[1,2,3],
[4,5,6],
[7,8,9]
])

print(df)

print(df.head(1)) ##先頭確認、デフォルト先頭5行表示

print(df.tail(1)) ##末尾表示、デフォルト末5行

print(df.iloc[:,:1].head())#iloc[行、列]

print(df.describe())#describeを使うと、平均、標準偏差とかいろいろな結果を一度に確認可能

print(df.values)#.valuesを使うとNumpy形式に変換可能

 

▼実行結果

0 1
1 2
2 3
dtype: int64
0 1 2
0 1 2 3
1 4 5 6
2 7 8 9
0 1 2
0 1 2 3
0 1 2
2 7 8 9
0
0 1
1 4
2 7
0 1 2
count 3.0 3.0 3.0
mean 4.0 5.0 6.0
std 3.0 3.0 3.0
min 1.0 2.0 3.0
25% 2.5 3.5 4.5
50% 4.0 5.0 6.0
75% 5.5 6.5 7.5
max 7.0 8.0 9.0
[[1 2 3]
[4 5 6]
[7 8 9]]

 

ちょっと今日はめんどくさいので省くと、

pandasにもいろんな関数(メソッド)が存在して、それらを駆使してデータ解析を行うということがわかった。

 

あとは使うときかな~

 

python⑤

python5日目~

 

MX ERGOとHHKBぽちっちゃったぁ^q^

まぁ長く使うし実質0円だよね

 

今日はNumpyというライブラリのことを動画で見ました。

https://www.youtube.com/watch?v=qMjK2131f3I&list=PLCZyyif9kAwX7rlXKrJTlPQs9Nk7TBAHO&index=21

 

まんま模写で覚え書き。

なんかこの動画で紹介された機能だけでもいろいろできて面白そうw

どう使うかわからないけど

 

import numpy as np

Numpyをよびだすとき、as npとすることでNumpyをnpという名前で呼び出すことができる。

 

x = np.array([1,2,3])#arrayを使うことでベクトルや行列を表現できる

print(x)
print(x.shape)#size
print(x.ndim)#次元を見れる

y = np.array([
[1,2,3], #,を使うと1行目2行目と区切れる
[4,5,6],#2行目
[7,8,9]#3行目
])

print(y)
print(y.shape)
print(y.ndim)#縦と横に数値が入ってるので2次元
print(np.zeros((2,2)))#np.zeros((x,x))で行列の数を表示できる
print(y.mean())#.meanで全体の合計値の平均をとってこれる
print(y.mean(axis=1))#axisで各行ごとの平均をとることができる 数字で方向が決まる。1は横
print(y.var())#分散
print(y.std())#標準偏差
print(y.max())#最大値
print(y.max(axis=1))#各行の最大値

X = np.array([
[2,3],
[1,5],
[3,1]
])
print(X)
print(X.T)#.Tで転置(行と列の入れ替え)
print(np.dot(X,X.T))#np.dotは行列積の計算

▼実行結果

[1 2 3]
(3,)
1
[[1 2 3]
[4 5 6]
[7 8 9]]
(3, 3)
2
[[0. 0.]
[0. 0.]]
5.0
[2. 5. 8.]
6.666666666666667
2.581988897471611
9
[3 6 9]
[[2 3]
[1 5]
[3 1]]
[[2 1 3]
[3 5 1]]
[[13 17 9]
[17 26 8]
[ 9 8 10]]

 

▼各表現方法

.array:ベクトルや行列を表現

.shape:全要素数

.ndim:次元を表現

.mean:各行全体の合計値の平均を出す

.var:分散値

.std:標準偏差

.max:各行の最大値

.zeros(x.x):行列の数を表示

axis=x:軸。xの値によって方向指定。0が列、1が行

.T:行と列の入れ替え

 

これが一部だと・・・

 

以上

 

python⑤

python5日目

 

動画見て勉強してるけどprogateよりわかりやすいかもしれない。

 

①ライブラリ(パッケージ)

言語にはもともと用意されてる機能が詰まったライブラリと呼ばれるものがある。

pythonではパッケージと呼ばれる。

 

今回mathとdatetimeで動作見た。

 

math:計算関係のものが詰まったライブラリ

datetime:日付関連が詰まってる

 

import math
print(math.pi)

from datetime import date
print(date.today())
print(date.today().year)
print(date.today().month)
print(date.today().day)

こんな感じで。

▼実行結果

3.141592653589793
2020-09-04
2020
9
4

 

ライブラリの機能は調べたらいっぱい出てくるらしい。

今回mathではπを表示した。

 

datetimeの使い方でfrom xx import xxとしてるのは、datetimeというライブラリの中からdateという機能を使うといった書き方。

 

使い方上記通り。年月日を指定して表示させることも可能。

 

②継承

クラスを別のクラスでも使えるような機能。

継承するクラスを"親"と呼び、親を使うクラスを"子"と呼ぶ

 

class Person:
def __init__(self,name,nationality,age):
self.name = name
self.nationality = nationality
self.age = age
##self.***で定義してる変数を属性と呼ぶ

def __call__(self):
print("this is call")

def say_hello(self):
print("{}hello".format(self.name))


class saiyan(Person):
def __init__(self,name,nationality,age,strength):
super().__init__(name,nationality,age)
self.strength = strength
goku = saiyan("goku","space",15,1500)

print(goku.name)

print(goku.say_hello())

こんな書き方をすると、継承したいクラスを使うことができる。

class xxxx(継承クラス名):

 def __init__(self,name,nationality,age,strength)

        super().__init__(name,nationality,age) #super()が親クラスのこと

  ↑これで、親クラスで定義した属性を子クラスでも定義したことになる。

       self.strength = strength #子クラスで新しく定義する属性は通常通り記載

 

▼実行結果

goku
gokuhello

 

 

 

こんな感じ、以上!

python④

python4日目~

classとかinit関数とか全然わからなすぎて理解が追い付かないw

 

▼用語

・メソッド:クラス内で定義されている関数

・属性:クラスの中に定義されている変数

 

 

①ローカル変数とグローバル変数

・ローカル変数

関数の中に定義した変数のこと。

関数の外ではローカル変数を使うことができない。

 

グローバル変数

関数の外に定義した変数のこと。

関数の中でも外でも使用可能。

 

②クラス

クラスは設計図のようなもの

大規模な開発の時にとても役立つらしい。

以下例

class Person:
def __init__(self,name,nationality,age):
self.name = name
self.nationality = nationality
self.age = age
##self.***で定義してる変数を属性と呼ぶ

def say_hello(self):
print("{}hello".format(self.name))

#インスタンス化(実体化)
takeshi = Person("Tanaka","jp","25")
#personという設計書をもとにtakeshiを実体化する。

print(takeshi.say_hello())

これで出力できると思ったけどpycharmではできないのか・・・?

間違えてる?まぁいったん理解用なので・・・。

 

この処理の流れとしては以下。

1. Personというclassを定義

2. Personクラスの中に、__init__関数とsay_hello関数を定義

__init__関数は初期化の関数(詳しくは後述)

say_hello関数は引数を使ってprint文で出力させる関数

 

3. クラスの作成が終わったので、インスタンスを作成。

インスタンスとはクラスを実体化したもの。

※クラスの関数や変数を使うためのもの。

ここのサイトが分かりやすかった。(https://techacademy.jp/magazine/23289)

 

④selfを書いてあるので、インスタンスがselfに入り、インスタンスで書いておいた引数を順番に代入していく。

 

これを完璧に理解するには慣れが必要か…。

 

 

③__init__関数と__call__関数について

特別な使い方をする関数が存在するらしい。主にこの2つ?

▼__init__関数

初期化のためのメソッド

クラスをインスタンス化するときに必要なメソッド

インスタンス生成時に自動で呼ばれるらしい

 

引数の一番最初に"self"と入れるのが重要

└selfにはインスタンス自体が渡される。

※selfは呼び出したインスタンス自身のこと

 

▼__call__関数

これは単純に呼び出し方が特殊らしい

インスタンス名(__call__)でも呼べるが、インスタンス名()でも呼び出せる

 

 

とりあえずこんな感じかな~

次に躓くのはまたこれが出てきた時と自分で何かひねり出す時だ。

 

▼参考

init関係

https://techacademy.jp/magazine/24530#:~:text=__init__%E3%81%AF%E3%80%81%E3%82%AF%E3%83%A9%E3%82%B9,%E3%81%AB%E5%BF%85%E8%A6%81%E3%81%AA%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%81%A7%E3%81%99%E3%80%82&text=%E4%BE%8B%E3%81%88%E3%81%B0%E3%80%81%E3%80%8C%E4%BA%BA%E3%80%8D%E3%81%A8%E3%81%84%E3%81%86%E6%8A%BD%E8%B1%A1,%E3%81%AA%E3%81%91%E3%82%8C%E3%81%B0%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82

https://uxmilk.jp/39906

https://qiita.com/ishigen/items/2d8b6e6398743f2c8110

https://qiita.com/wakoit/items/659dd0fdbb16b214454f

 

インスタンスとは

https://techacademy.jp/magazine/23289