Python 3 엔지니어 인증 데이터 분석 시험의 네 가지 라이브러리를 공부했습니다.
시험 문제의 주요 라이브러리
NumPy, pandas, Matplotlib, scitit-learn의 4개의 라이브러리에서 67.5%가 시험 문제에서 출제됩니다.
여기를 억제하면 거의 합격 틀림없다고 생각하기 때문에, 대충 공부해 보았습니다.
앞으로 받는 분에게 어떤 것을 기억하는지 도움이 되었으면 합니다.
(나는 아직 시험을 받지 않았다)
Python 3 엔지니어 인증 데이터 분석 시험 시험 전 학습 정보
NumPy
Numpy는 시험 문제의 15%를 차지하고 있어 기본 조작은 어렵지 않기 때문에 몇번인가 실제로 jupyter notebook로 몇번인가 쓰고 있으면 자연스럽게 기억한다.
reshape(변형)
a1 = np.array([0, 1, 2, 3, 4, 5])
# 2×3の配列に変換
a2 = a1.reshape((2, 3))
a2
array([[0, 1, 2],
[3, 4, 5]])
# 要素数が合わないとValueError
a3 = a1.reshape((3, 4))
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-23-304b0b5b4ab2> in <module>
----> 1 a3 = a1.reshape((3, 4))
ValueError: cannot reshape array of size 6 into shape (3,4)
rabel, flatten
rabel과 flatten은 모두 배열을 다시 만들지 만 rabel은 참조를 반환하는 반면 flatten은 복사본을 반환합니다.
참조의 경우는 Shallow Copy, 그렇지 않은 경우는 Deep Copy라고 한다.
# 配列をつなげる
a4 = a2.ravel()
a4
array([0, 1, 2, 3, 4, 5])
a5 = a2.flatten()
a5
array([0, 1, 2, 3, 4, 5])
a4[1] = 10
a4
array([ 0, 10, 2, 3, 4, 5])
a5[2] = 20
a5
array([ 0, 1, 20, 3, 4, 5])
# a4(ravel)で変更した箇所がa2にも影響されているがa5(flatten)で変更した箇所はa2に影響がない
a2
array([[ 0, 10, 2],
[ 3, 4, 5]])
linspace
범위 지정으로 균등 분할 데이터를 작성
np.linspace(0, 1, 5)
array([0. , 0.25, 0.5 , 0.75, 1. ])
# この整列はsin関数のグラフを描く場合に使用する
np.linspace(0, np.pi, 21)
array([0. , 0.15707963, 0.31415927, 0.4712389 , 0.62831853,
0.78539816, 0.9424778 , 1.09955743, 1.25663706, 1.41371669,
1.57079633, 1.72787596, 1.88495559, 2.04203522, 2.19911486,
2.35619449, 2.51327412, 2.67035376, 2.82743339, 2.98451302,
3.14159265])
np.diff
요소 간의 차이를 반환합니다.
d = np.array([10, 5, 3, 3, 10])
np.diff(d)
# 前後の差分が出る
array([-5, -2, 0, 7])
concatenate
연결하기
# 2つの配列を作成
b1 = [1, 3, 5]
b2 = [2, 4, 6]
b3 = np.concatenate([b1, b2])
b3
# 2つの配列が連結される
array([1, 3, 5, 2, 4, 6])
# 2次元配列にする
b3 = b3.reshape((2, 3))
b3
array([[1, 3, 5],
[2, 4, 6]])
# もう一つ2次元配列を作成
b4 = np.array([[10], [20]])
b4
array([[10],
[20]])
# 2次元配列の連結
b5 = np.concatenate([b3, b4], axis=1)
b5
array([[ 1, 3, 5, 10],
[ 2, 4, 6, 20]])
# hstackでも同じ動作
np.hstack([b3, b4])
array([[ 1, 3, 5, 10],
[ 2, 4, 6, 20]])
# 新たに1次元配列を作成
b6 = np.array([100, 200, 300, 400])
b6
array([100, 200, 300, 400])
# vstackで行を増やす連結
b7 = np.vstack([b5, b6])
b7
array([[ 1, 3, 5, 10],
[ 2, 4, 6, 20],
[100, 200, 300, 400]])
hsplit, vsplit
2차원 배열 분할
# 連結で使用したb7の配列を2分割にする。第二引数は何列にするかを表している。
a1, a2 = nphsplit(b7, [2])
a1
array([[ 1, 3],
[ 2, 4],
[100, 200]])
# 第二引数の残りの列がa2になる。ここでは2列。
a2
array([[ 5, 10],
[ 6, 20],
[300, 400]])
# vsplitは行方向に分割する
a1, a2 = np.vsplit(b7, [2])
a1
array([[ 1, 3, 5, 10],
[ 2, 4, 6, 20]])
a2
array([[100, 200, 300, 400]])
T
행과 열을 바꾸는 것을 전치라고합니다.
# 分割で使用したa1を使う。(2×4)行列
a1
array([[ 1, 3, 5, 10],
[ 2, 4, 6, 20]])
# 転置して4×2行列になる
a1.T
array([[ 1, 2],
[ 3, 4],
[ 5, 6],
[10, 20]])
meshgrid
그리드 데이터 생성
등고선이나 히트 맵 등을 그릴 때 사용한다. x 좌표, y 좌표의 배열로부터, 이들을 조합해 가능한 모든 점의 좌표 데이터를 생성한다.
e = np.arange(0, 4)
e
array([0, 1, 2, 3])
f = np.arange(4, 7)
f
array([4, 5, 6])
# eとfを行方向と列方向にグリッド(方眼上)のデータを生成します。
ee, ff = np.meshgrid(e, f)
ee
array([[0, 1, 2, 3],
[0, 1, 2, 3],
[0, 1, 2, 3]])
ff
array([[4, 4, 4, 4],
[5, 5, 5, 5],
[6, 6, 6, 6]])
유니버설 기능
abs 함수
절대값을 구할 수 있다
# マイナス値のある配列を作成
a = np.arange(-3, 3).reshape((2, 3))
a
array([[-3, -2, -1],
[ 0, 1, 2]])
# 絶対値を求める
np.abs(a)
array([[3, 2, 1],
[0, 1, 2]])
sin 함수, cos 함수, log 함수
sin, cos는 미분으로 기소해석에서는 당연히 사용하기 때문에 미분이 알려지지 않으면 시작되지 않는다.
어떤 시간에 무엇이 유용한지 이해하는 것이 매우 중요합니다.
b = np.linspace(-1, 1, 10)
b
array([-1. , -0.77777778, -0.55555556, -0.33333333, -0.11111111,
0.11111111, 0.33333333, 0.55555556, 0.77777778, 1. ])
# sin関数
np.sin(b)
array([-0.84147098, -0.70169788, -0.52741539, -0.3271947 , -0.11088263,
0.11088263, 0.3271947 , 0.52741539, 0.70169788, 0.84147098])
# cos関数
np.cos(b)
array([0.54030231, 0.71247462, 0.84960756, 0.94495695, 0.99383351,
0.99383351, 0.94495695, 0.84960756, 0.71247462, 0.54030231])
c = np.array([0, 1, 2])
c
array([0, 1, 2])
# log関数 ネイぴあ数を底とする自然対数logを計算する。-infはマイナス無限大を意味する。
np.log(c)
array([ -inf, 0. , 0.69314718])
pandas
pandas는 데이터 획득 및 가공 도구
사용법은 어렵지 않고 참고 자료를 보면 대략 이해할 수 있다.
시험문제의 17.5%를 차지한다.
데이터의 가공은 기억하는 것이 조금 귀찮지만, 어려운 것은 아니다.
import pandas as pd
d = pd.DataFrame([[100, "first", True],
[200, "second", False],
[300, "third", True],
[400, "fourth", True],
[500, "fifth", False]])
d
CSV와 Excel 파일을 읽고 쓸 수 있습니다.
# CSVの書き込み
d.to_csv("write_csv.csv")
Matplotlib
파이썬으로 2 차원 그래프를 그리는 라이브러리.
시험문제의 15%를 차지한다.
꺾은선형 차트, 막대형 차트, 산점도 등의 그래프를 세세하게 묘사할 수 있습니다.
난이도도 전혀 높지 않은 인상입니다.
import matplotlib.pyplot as plt
import matplotlib.style
import numpy as np
matplotlib.style.use('ggplot')
x = [10, 30, 60]
y = [20, 50, 150]
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('test2-style')
fig, ax = plt.subplots()
x = [1, 2, 3, 4]
y = [8, 1, 5, 10]
labels = ['first', 'secound', 'third', 'fourth']
ax.bar(x, y, tick_label=labels)
fig, ax = plt.subplots()
np.random.seed(500)
x = np.random.rand(80)
y = np.random.rand(80)
ax.scatter(x, y)
scikit-learn
scikit-learn은 이 엔지니어 인증 데이터 분석 시험의 간이 되는 부분입니다.
시험 문제 중 20%는 여기에서 나옵니다.
그리고 scikit-learn은 데이터 해석에서 가장 중요한 부분이 전처리 과정을 수행하는 라이브러리입니다.
분류, 회귀, 교사 있어 학습, 서포트 벡터 머신, 결정 트리, 클러스터링 등 기계 학습에는 친숙한 단어입니다만, 참고 자료의 scikit-learn의 챕터는 기계 학습을 접한 적이 없는 분에게는 기억할 수가 있습니다 조금 많은 느낌.
학습방법으로는 한번 참고서류를 읽고 모르면 인터넷으로 조사하는 편이 알기 쉬운 기사가 많이 있으므로, 여기 부분은 몇번이나 책을 읽는 것보다 구구하는 편이 추천입니다. Udemy 등에서 동영상 교재를 찾는 것도 추천합니다.
요약
엔지니어 인증 데이터 분석 시험은 라이브러리의 사용 방법 시험이라고 해도 과언이 아닙니다.
책을 읽는 것만으로는 기억이 어렵고 실제로 어쩐지 움직일 필요가 있습니다만, 기계 학습을 조금이라도 갇힌 사람이면 어려운 시험이 아니라고 생각합니다.
기계 학습을 공부한 적이 없다면, 책을 읽는 것만으로 scikit-learn의 챕터는 어려운 인상을 받았습니다.
Reference
이 문제에 관하여(Python 3 엔지니어 인증 데이터 분석 시험의 네 가지 라이브러리를 공부했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Hidenori-Yamaguchi/items/0c0baaf1d2f5c9ddb977
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
a1 = np.array([0, 1, 2, 3, 4, 5])
# 2×3の配列に変換
a2 = a1.reshape((2, 3))
a2
array([[0, 1, 2],
[3, 4, 5]])
# 要素数が合わないとValueError
a3 = a1.reshape((3, 4))
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-23-304b0b5b4ab2> in <module>
----> 1 a3 = a1.reshape((3, 4))
ValueError: cannot reshape array of size 6 into shape (3,4)
# 配列をつなげる
a4 = a2.ravel()
a4
array([0, 1, 2, 3, 4, 5])
a5 = a2.flatten()
a5
array([0, 1, 2, 3, 4, 5])
a4[1] = 10
a4
array([ 0, 10, 2, 3, 4, 5])
a5[2] = 20
a5
array([ 0, 1, 20, 3, 4, 5])
# a4(ravel)で変更した箇所がa2にも影響されているがa5(flatten)で変更した箇所はa2に影響がない
a2
array([[ 0, 10, 2],
[ 3, 4, 5]])
np.linspace(0, 1, 5)
array([0. , 0.25, 0.5 , 0.75, 1. ])
# この整列はsin関数のグラフを描く場合に使用する
np.linspace(0, np.pi, 21)
array([0. , 0.15707963, 0.31415927, 0.4712389 , 0.62831853,
0.78539816, 0.9424778 , 1.09955743, 1.25663706, 1.41371669,
1.57079633, 1.72787596, 1.88495559, 2.04203522, 2.19911486,
2.35619449, 2.51327412, 2.67035376, 2.82743339, 2.98451302,
3.14159265])
d = np.array([10, 5, 3, 3, 10])
np.diff(d)
# 前後の差分が出る
array([-5, -2, 0, 7])
# 2つの配列を作成
b1 = [1, 3, 5]
b2 = [2, 4, 6]
b3 = np.concatenate([b1, b2])
b3
# 2つの配列が連結される
array([1, 3, 5, 2, 4, 6])
# 2次元配列にする
b3 = b3.reshape((2, 3))
b3
array([[1, 3, 5],
[2, 4, 6]])
# もう一つ2次元配列を作成
b4 = np.array([[10], [20]])
b4
array([[10],
[20]])
# 2次元配列の連結
b5 = np.concatenate([b3, b4], axis=1)
b5
array([[ 1, 3, 5, 10],
[ 2, 4, 6, 20]])
# hstackでも同じ動作
np.hstack([b3, b4])
array([[ 1, 3, 5, 10],
[ 2, 4, 6, 20]])
# 新たに1次元配列を作成
b6 = np.array([100, 200, 300, 400])
b6
array([100, 200, 300, 400])
# vstackで行を増やす連結
b7 = np.vstack([b5, b6])
b7
array([[ 1, 3, 5, 10],
[ 2, 4, 6, 20],
[100, 200, 300, 400]])
# 連結で使用したb7の配列を2分割にする。第二引数は何列にするかを表している。
a1, a2 = nphsplit(b7, [2])
a1
array([[ 1, 3],
[ 2, 4],
[100, 200]])
# 第二引数の残りの列がa2になる。ここでは2列。
a2
array([[ 5, 10],
[ 6, 20],
[300, 400]])
# vsplitは行方向に分割する
a1, a2 = np.vsplit(b7, [2])
a1
array([[ 1, 3, 5, 10],
[ 2, 4, 6, 20]])
a2
array([[100, 200, 300, 400]])
# 分割で使用したa1を使う。(2×4)行列
a1
array([[ 1, 3, 5, 10],
[ 2, 4, 6, 20]])
# 転置して4×2行列になる
a1.T
array([[ 1, 2],
[ 3, 4],
[ 5, 6],
[10, 20]])
e = np.arange(0, 4)
e
array([0, 1, 2, 3])
f = np.arange(4, 7)
f
array([4, 5, 6])
# eとfを行方向と列方向にグリッド(方眼上)のデータを生成します。
ee, ff = np.meshgrid(e, f)
ee
array([[0, 1, 2, 3],
[0, 1, 2, 3],
[0, 1, 2, 3]])
ff
array([[4, 4, 4, 4],
[5, 5, 5, 5],
[6, 6, 6, 6]])
# マイナス値のある配列を作成
a = np.arange(-3, 3).reshape((2, 3))
a
array([[-3, -2, -1],
[ 0, 1, 2]])
# 絶対値を求める
np.abs(a)
array([[3, 2, 1],
[0, 1, 2]])
b = np.linspace(-1, 1, 10)
b
array([-1. , -0.77777778, -0.55555556, -0.33333333, -0.11111111,
0.11111111, 0.33333333, 0.55555556, 0.77777778, 1. ])
# sin関数
np.sin(b)
array([-0.84147098, -0.70169788, -0.52741539, -0.3271947 , -0.11088263,
0.11088263, 0.3271947 , 0.52741539, 0.70169788, 0.84147098])
# cos関数
np.cos(b)
array([0.54030231, 0.71247462, 0.84960756, 0.94495695, 0.99383351,
0.99383351, 0.94495695, 0.84960756, 0.71247462, 0.54030231])
c = np.array([0, 1, 2])
c
array([0, 1, 2])
# log関数 ネイぴあ数を底とする自然対数logを計算する。-infはマイナス無限大を意味する。
np.log(c)
array([ -inf, 0. , 0.69314718])
import pandas as pd
d = pd.DataFrame([[100, "first", True],
[200, "second", False],
[300, "third", True],
[400, "fourth", True],
[500, "fifth", False]])
d
# CSVの書き込み
d.to_csv("write_csv.csv")
import matplotlib.pyplot as plt
import matplotlib.style
import numpy as np
matplotlib.style.use('ggplot')
x = [10, 30, 60]
y = [20, 50, 150]
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('test2-style')
fig, ax = plt.subplots()
x = [1, 2, 3, 4]
y = [8, 1, 5, 10]
labels = ['first', 'secound', 'third', 'fourth']
ax.bar(x, y, tick_label=labels)
fig, ax = plt.subplots()
np.random.seed(500)
x = np.random.rand(80)
y = np.random.rand(80)
ax.scatter(x, y)
Reference
이 문제에 관하여(Python 3 엔지니어 인증 데이터 분석 시험의 네 가지 라이브러리를 공부했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Hidenori-Yamaguchi/items/0c0baaf1d2f5c9ddb977텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)