3週目整理
13125 ワード
Data
Dataset
可視化にはデータが必要です.可視化するデータは、データセットの観点でグローバル個別データの観点で局所的に区分することができる.データの種類は大きく分けられます.
1.数値型
連続:長さ、重量、温度
離散型:サイコロ目盛り、人数
名目型:血液型、宗教
順序型:学年、減点、等級
構造化データ
表形式で提供され、一般的にcsv、tsvファイルです.1つの項目を横にして、featureを縦に表します.
テーブル列データ
これは時間が経つにつれて生じたデータです.気温、株価などの定型データや音、ビデオなどの非定型データが存在する.
時間が経つにつれて、トレンド、季節性、周期性などを見てみましょう.
地理/地図データ
距離、経路、分布など
リレーショナルデータ
オブジェクトはノードを表し、関係はリンクを表し、サイズ、色、数などはオブジェクトと関係の重みを表します.
階層データ
関係には関係が明確なデータが含まれており,Tree,Treemap,Sunburstなどがある.
Matplotlib
Pythonが提供するビジュアル化ライブラリは、複数のライブラリと互換性があり、複数のビジュアル化方法を提供しています.
デフォルトPlot
fig = plt.figure(figsize=(10,10))
ax = fig.add_subplot()
matplotlibでは,可視化はFigureという大きなフレームワークにAxというサブマップを追加する方式である.Figsizeでサイズを調整できます.サブマップを追加する場合は、以下の方法で位置を調整できます.fig = plt.figure()
ax = fig.add_subplot(131)
ax = fig.add_subplot(132)
ax = fig.add_subplot(1,3,3) # 같은 방식이지만 가독성을 위해
グラフィックを表現する場合は、次のようにコードを記述できます.fig = plt.figure()
x1 = [1,2,3]
plt.plot(x1, color = 'r',label='red') # 선 그래프로 그림, 색: 빨간색, 범례를 표시하기 위해 label을 red로 선언
plt.legend() # 범례표현
ax.set_title('test_graph') # 차트의 이름 정의
ax.annotate(text='red graph',xy=(1,2)) # 원하는 위치에 text 추가하는 기능
plt.show()
上記のコードを実行する画面は次のとおりです.Bar Plot
長方形のバーを使用してデータ値を表すグラフィック.
これは異なるカテゴリの数値を比較するのに適した方法である.
方向に垂直なら.bar()でx軸にカテゴリy軸の値をマークします.bottomパラメータを使用してデータ比較を行います.
水平面barh()でy軸にカテゴリをマークし、x軸に値をマークします.左パラメータを使用してデータ比較を行います.
x軸の始点は0でなければなりません.
値でソートされたsortは、情報の正確な伝達を確保します.値()とアルファベット順のsort.index()を使用します.
fig = plt.figure()
x = list(['C','Java','Python','JavaScript'])
y = np.array([1,2,3,4])
plt.bar(x, y, # 세로 bar type
width=0.7, # 그래프 너비
edgecolor='black', # 테두리
linewidth=2, # 선 두께
color='red') # 그래프 색
# plt.barh(x,y) # 가로 bar type
plt.show()
上記のコードを実行して得られる図形の形状は以下の通りである.各種Bar Plotの実践に適用する
StudentsPerformanceはデータセットを準備します.csvからデータを取得します.
student = pd.read_csv('./StudentsPerformance.csv')
student.info() # data의 null 값 유무와 dtype을 확인할 수 있다.
# 수치와 범주를 data representation을 mapping하는 것이라 중요하다.
グラフを描くには、グループ情報を可視化する必要があります.group = student.groupby('gender')['math score'].value_counts()
# 성별에 따른 수학점수를 group화
これに基づいて、以下のようにグラフィックで表示されます.fig, axes = plt.subplots(1, 2, figsize=(15, 7))
axes[0].bar(group['male'].index, group['male'], color='royalblue') # 남자의 수학점수는 파란색으로
axes[1].bar(group['female'].index, group['female'], color='tomato') # 여자의 수학점수는 빨간색으로
この操作の結果は次のとおりです.Stacked Bar Plot
bottomパラメータを使用して、次の空間を空にして、2つのグラフィックを統合できます.
fig, axes = plt.subplots(1, 2, figsize=(15, 7))
group_cnt = student['race/ethnicity'].value_counts().sort_index()
axes[1].bar(group['male'].index, group['male'], color='royalblue')
axes[1].bar(group['female'].index, group['female'], bottom=group['male'], color='tomato')
実行結果は次のとおりです.Line Plot
Line Plotは連続的に変化する値を順次点として表し,線として接続する.トレンドを観察するために、時間/順序の変化に特に適しているため、表列分析に特化しています.
線で表されるので、これらの線を区別する要素を知る必要があります.
1.カラー(Color)
2.タグ(marker,markersize)
3.ラインタイプ(linestyle,linewidth)
基本的なline plotを描画するコードは以下の通りです.
fig = plt.figure()
x = [1,2,3,4]
y = [1,3,2,4]
plt.plot(x,y,
color='green', # 색
marker='o', # 마커 형태
linestyle='solid') # 라인 형태
plt.show()
このコードを実行して得られるグラフィックの形式は次のとおりです.補間
データにエラーやノイズがあると、データの傾向を特定することが困難になるため、これらの問題を解決しようとします.
make_interp_spline(x, y)
Scatter Plot
ポイントを使用して、2つのフィーチャーの関係を理解します.色、形、大きさなどで表現できます.
fig = plt.figure(figsize=(7, 7)) # 전체적인 틀
ax = fig.add_subplot(111, aspect=1) # aspect는 subplot의 가로축과 세로축의 scale을 맞춰준다.
np.random.seed(970725)
x = np.random.rand(20)
y = np.random.rand(20)
ax.scatter(x, y,
c='red', # 그래프 색상
marker='o', # 그래프 모양
linewidth=1, # 너비
edgecolor='black') # 테두리 색
ax.set_xlim(0, 1.05)
ax.set_ylim(0, 1.05)
plt.show()
上記のコードで得られた散点図の形式は以下の通りである.Text
可視化された資料だけでは十分な説明は難しいので,それを補完するために用いる.テキストのタイプは次のとおりです.
Title:最大のトピック
Label:軸のデータについて
Tick Label:軸にルーラーを使用する
Legend:凡例
Annotation:各種説明情報(矢印)
Title
set titleは、グラフィックタイトルを決定できる関数です.
ax.set_title('Ax Title') # 그래프 제목 설정
ax.set_xlabel('X Label') # X축의 이름 설정
ax.set_ylabel('Y Label') # Y축의 이름 설정
Legend
例の基本的な使い方は次のとおりです.
ax.plot([1, 3, 2], label='legend') # plot의 label을 통해서 범례를 그려주는 것이 일반적
ax.legend(
title='Gender', # 범례의 제목
shadow=True, # 그림자
labelspacing=1.2, # 범례 label들간의 공간
loc='lower right' # 위치 지정
bbox_to_anchor=[1.2, 0.5] # 외부로 빼는 기능
)
Text
図面に説明を追加するために書かれたテキストは、位置を調整したり、フォントやサイズなどを設定したりすることができます.
ax.text(x=0.5, y=0.5, s='DataViz is Fun', # x,y 위치
fontsize=20, # 폰트 크기
fontweight = 'bold', # 폰트 굵기
fontfamily = 'serif', # 글꼴
color = '#0047ab', # 글자 색
linespacing = 2, # 간격
backgroundcolor = 'lightgray', # text 배경 색
alpha = 0.5, # 투명도
va = 'center', # 수직정렬(top, bottom, center)
ha = 'center', # 수평정렬(top, bottom, center)
rotation = 'horizontal', # 회전
bbox = dict(boxstyle='round',ec = 'red', facecolor = 'gray', alpha = 0.4) # dict 형태로 전달되어야함.
)
上記のコードで得られたテキストは次のとおりです.Ticks & Text
滴答の除去または調整方法.
ax.set(frame_on=False) # frame을 안보이게 설정
ax.set_yticks([]) # y축의 정보를 삭제
ax.set_xtickslabels(math_grade.index) # bar 하나당 x축의 범위 설정
Color
色は最も有効なチャネルを区別する方法です.色を区別する要素は3つあります.
中心(色調):r,g,b
Saturate(彩度):鮮明度
輝度きど:カラー輝度からーきど
Facet
これは,分割し,同じ方法で複数の特徴を同時に表示したり,大きなフレームワークでは見えない部分集合を詳細に表示したりすることを意味する.
Figureは大きなフレームワークを表し、Axは各plotに含まれる空間を表す.
Figureは大きなフレームワークなので、常に1つの値であり、plotは複数の値であってもよい.
最も基本的な分割方法は以下の通りである.
fig, (ax1, ax2) = plt.subplots(1, 2) # 세로로 1 가로로 2 만큼 쪼개는 뜻
Squeeze & Flatten
押し出しを使用すると、常に2 D配列が得られ、可変サイズで重複文を使用するのに役立ちます.
fig, axes = plt.subplots(n, m, squeeze=False, figsize=(m*2, n*2))
idx = 0
for i in range(n):
for j in range(m):
axes[i][j].set_title(idx, color = 'white')
axes[i][j].set_xticks([])
axes[i][j].set_yticks([])
idx+=1
上記の方法を用いるには二重複文で操作する必要があるので,一つの複文のみを用いる場合は扁平化を用いる.fig, axes = plt.subplots(n, m, figsize=(m*2, n*2))
for i, ax in enumerate(axes.flatten()):
ax.set_title(i, color = 'white')
ax.set_xticks([])
ax.set_yticks([])
aspect
比率を表します.使用方法は次のとおりです.
fig.add_subplot(122, aspect=0.5) # x축 한칸이 y축 0.5칸
add_gridspec
N x Mメッシュでは、スライドを使用してサブブロックを配置できます.使い方は以下の通りです.
fig.add_gridspec(3, 3) # make 3 by 3 grid (row, col)
make_axes_locatable
カラーストライプの実施の一般的な方法
ax_divider = make_axes_locatable(ax)
ax = ax_divider.append_axes("right", size="7%", pad="2%") # 쪼개기 colorbar쓸때 유용
実行結果は次のとおりです.Grid
グリッドは、軸と平行線の補助を使用して情報を提供します.グリッドの形態には、次のような形態があります.
2つの変数の和x+y=c
比率y=cx
2つの変数の積xy=c
特定データを中心に(x-x')^2+(y-y')^2=c
一般に、グリッドは次のように宣言できます.
ax.grid()
Line
直交座標系に平行線を描画します.
axvline()
axhline()
ax.axvline(0, color='red') # 세로축 빨간선
ax.axhline(0, color='green') # 가로축 초록선
Span
これは特定の面積を表す方法です.
axvspan()
axhspan()
ax.axvspan(0,0.5, color='red') # y축 0~0.5까지 빨간 면적 표시
ax.axhspan(0,0.5, color='green') # x축 0~0.5까지 초록 면적 표시
Spines
代表的な要素は以下の3つです.
set visible:軸の表示または非表示
set linewidth:軸の厚さを調整する
set position:軸の位置を調整する
Seaborn
sebornはMatplotlibに基づく統計的可視化ライブラリである.簡潔な文法と簡潔な設計
import seaborn as sns
Countplot
sns.countplot(x : 그래프의 방향(세로)
y : 그래프의 방향(가로)
order : 순서 지정
hue : 데이터의 구분 기준을 정해서 색을 통해 구분지음
palette : 색상변경
color : hue로 지정된 그룹을 gradient 색생 전달 가능
hue_order : 색상의 순서를 정할 수 있다.
)
Categorical API
四分位数は、以下に示すように、データを四等分の観測値に分割することができる.
min
25%(lower quartile)
50%(median)
75%(upper quartile)
max
Box Plot
Box Plotを描く方法は次のとおりです.
sns.boxplot(x='math score', data = student, ax=ax)
この操作を行った結果の値は次のとおりです.IQR : 25~ 75%
whrisker:箱の外部範囲を表す線
outlier : -IQR1.5および+IQR 1.5を超える値
min : -IQR1.5以上の最小値
max : +IQR1.5以下の最大値
Violin Plot
Box Plotは実際の分布を表現するのが難しいので,補足する.次のコードで記述して表示できます.
sns.violinplot(x='math score', data=student, ax=ax)
この操作を行った結果の値は次のとおりです.villin plotは,データ不連続もピクチャのように連続的に表現され,データ範囲のないデータさえ表示されるため誤解を生じる.これを減らすには、次のパラメータを使用します.
bw:分布の詳細度
Cut:いったいどれくらい切るの?
内部:内部の表現方法
再作成に使用すると、次のように記述できます.
sns.violinplot(x='math score', data=student, ax=ax,
bw=0.1, # 분포 표현을 얼마나 자세히 할 것인지
cut=0, # 끝 부분을 얼마나 자를 지
inner='quartile' # 내부를 어떻게 표현할 지
)
scaleとsplitパラメータを用いて比較することもできます.scale:各バイオリンの種類(幅:幅が等しく、count:実際のデータ量に比例、count:個数に比例)
split:並列比較
Distribution
すべてのカテゴリ/連続タイプの分布を表示
Univariate Distribution
ヒーストック
kdeplot : Kernel Density Estimate
ecdfflot:累積密度関数
rugplot:直線の密度関数を使用する
hisplotの使い方は以下の通りです.
sns.histplot(x='math score', data=student, ax=ax,
binwidth=50, # 막대의 너비 조정
bins=100, # 막대의 개수를 조정
element = 'ploy', # step, poly (그래프 모양)
multiple = 'stack' # layer, dodge, stack, fill(N개의 분포를 표현가능하다)
)
kdeplotは連続密度を表す関数である.使い方は以下の通りです.sns.kdeplot(x='math score', data=student, ax=ax
fill = True, # 내부를 채워서 밀도 표현
bw_method = 0.05, # 그래프 형태를 좀 더 자세하게 표현
hue = 'race/ethnicity',
hue_order=sorted(student['race/ethnicity'].unique()))
multiple = 'layer',
cumulative = True, # 0부터 데이터를 쌓아서 표현
complementary=True, # 데이터를 쌓아서 내려오는것
)
Joint Plot
sns.jointplot(x='math score', y='reading score',data=student,
hue = 'gender' # hue를 통해 성별같은 column으로 구분이 가능하다.
height=7)
2つの特徴を組み合わせると,結合確率分布はそれぞれの分布を見ることができる.Pair Plot
すべてのfeatureペアを可視化します.
sns.pairplot(data=iris,
hue='species' # 종에 대해 구분짓는다.
corner = True # Corner를 통해 상삼각행렬의 값을 보이지 않게 할 수 있다.
Facet Grid
これはpairplotのようなマルチパネルの可視化を使用することを意味する.全部で4つの関数があります.
catplot : Categorical
displot : Distribution
relplot : Relational
Implot : Regression
FacetGridは、行と列のcategoryに基づいてグラフィックの数を調整します.
Reference
この問題について(3週目整理), 我々は、より多くの情報をここで見つけました https://velog.io/@kimkihoon0515/3주차-정리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol