Pythonの穏やかなヒント
1.colab中韓文字体が破壊された場合
関連記事が多く、いろいろ試してみましたが、結局食べられたのはこの文章だけでした.親切な作者に感謝...未来の私のためにここにいます.
🤗 あわてないで
この方法はsebornでもmatplotlibでも.初めて検索した時『ん?』「sebornを描くのになぜmatplotlibの投稿しかないの?」そして長い間Seabornの文章を探していました...どちらも同じですから、心配しないで、ついて行きましょう.
STEP 1. フォントのインストール
ハングルフォントをインストールします.次は共有フォントです!apt-get update -qq # 요건 하던지 말던지
!apt-get install fonts-nanum* -qq
参考までに!pip install
など見たくなければ、命令の最後に&> /dev/null
を付けるだけです.
STEP 2. フォントのインストールパスの確認
import matplotlib.font_manager as fm # plot 폰트 매니저
# 전체 폰트 중에서 나눔 폰트 경로를 확인한다
sys_font=fm.findSystemFonts()
nanum_font = [f for f in sys_font if 'Nanum' in f]
nanum_font
上のコードを実行すると、以下のようにフォントインストールパスに分けられます.['/usr/share/fonts/truetype/nanum/NanumGothicLight.ttf',
'/usr/share/fonts/truetype/nanum/NanumBrush.ttf',
'/usr/share/fonts/truetype/nanum/NanumSquareRoundL.ttf',...]
STEP 3. フォントの指定
上で確認したパスを使用してplotフォントを指定します.import matplotlib as mpl
import matplotlib.pyplot as plt
font_location = '/usr/share/fonts/truetype/nanum/NanumSquareRoundEB.ttf' # 여기에 원하는 폰트 경로를 넣는다
font_name = fm.FontProperties(fname=font_location).get_name()
plt.rc('font', family=font_name)
mpl.rcParams['axes.unicode_minus'] = False # minus(-) 기호가 깨지는 것을 방지
fm._rebuild() # 이걸 안 하면 폰트 설정이 안 된다. 왜인지는 잘 모르겠다...
🤨 直接フォルダにフォントを入れてはいけませんか?
フォルダにNanumSquareRoundLを直接使用します.ttfを入れてfont_location
にパスすれば、インストールする必要はないでしょう.万!不思議なことに、その方法は役に立たない.少なくとも私が書いた方法ではそうです.
毎回!apt
フォントをインストールしないで、フォルダの中のものを直接書かなければなりません.
STEP 4. ランタイムを再起動して実行
上記の手順が完了しても、ハングルは破られます.CTRL+Mを押して運転を再起動し、コードを再実行すると正常に動作します.
2. df.pivot tableの後に無いNaNが出来た時
出力df.isnull().sum()
は、Nullがないことを確認し、df.pivot_table
をし、突然Nullが発生した.これは、pivot_table(index=..., columns=..., values=...)
からindex
とcolumns
の間のvalue
がない場合に生じる問題である.これはいったい何の話ですか.🙄) この文章には、以下のように転載される具体的な例がある.>> purchase_data
>>
date customer_id purchase_qty
0 01/01 id1 12
1 01/01 id2 5
2 01/02 id1 4
3 01/03 id1 7
>> purchase_data.pivot_table(index='date', columns='customer_id', values='purchase_qty', agg_func=np.sum)
>>
customer_id id1 id2
date
01/01 12 5
01/02 4 NaN
01/03 7 NaN
index
は、pivotテーブルのインデックスを文字通り、columns
はpivotテーブルで使用されるカラムの基準を表す.次に、values
は、計算される値がindex
およびcolumns
であることを意味する.いずれの設定も行わない場合、演算の平均値はvalues
であり、agg_func
オプションを使用する場合、加算、乗算などの演算も可能である.
上記の例の選択日はindex
であり、顧客idはcolumns
である.次に、日付とid(意味はないが、例のため)に基づいて、その顧客が購入した数の和を求める.
しかし、ご覧のように、01/02と01/03では、id 2のお客様は注文していません.従って、index
(01/02,01/03)およびcolumns
(id 2)に対応するvalues
(purchate qty)がないため、NANとして処理される.したがって、元のデータにNullがない場合でも、pivot_table
を使用するとNullが発生する可能性があります.この問題を解決するには、対応する値がない場合に、fill_value
オプションに入力する値を入力します.>> purchase_data
>>
date customer_id purchase_qty
0 01/01 id1 12
1 01/01 id2 5
2 01/02 id1 4
3 01/03 id1 7
>> purchase_data.pivot_table(index='date', columns='customer_id', values='purchase_qty', agg_func=np.sum, fill_value=0)
>>
customer_id id1 id2
date
01/01 12 5
01/02 4 0
01/03 7 0
値がない場合は0に処理されることがわかります.
3.相関行列で相関の大きい/小さいペアを順に表示したい場合
複数の変数間の相関を同時に表示するために、相関行列とホットマップがよく使用されます.
ソース:seaborn
ただ,変数が多すぎると,どのペアの相関度が最も高いか,最も低いかを見るのは難しい.値を直接確認する方法は次のとおりです.# correlation matrix 만들기
corr_matrix = data.corr()
# 오름차순으로 정렬하되 중복되는 쌍은 제거하기
sort_corr = corr_matrix.unstack().sort_values().drop_duplicates()
# 작은 값 순서대로 10쌍 출력
sort_corr[:10]
unstack()
は行列内の値を系列に変換し、sort_values()
は系列内の値を昇順に並べた.上にdrop_duplicates()
を作らないと、下のように順序だけを変えた同じペアが現れ、値を特定するのが難しい.A B -0.7
B A -0.7
A D -0.6
D A -0.6
逆降順で並べ替える場合は、sort_values(ascending=False)
に置けばいいです.しかし、この場合、A、B、C、...このように、まず自分の相関ペアが現れるので、sort_corr[5:]
のように変数の個数をスキップして出力します.
一般に、unstack()
は、多指数を除去するために使用される.例はこのブログにおいて非常によく示されている.私たちの現在の状況のようにマルチインデックスではないpdDataFrameはunstack()
でpdを表します.Seriesは戻ります.
Reference
この問題について(Pythonの穏やかなヒント), 我々は、より多くの情報をここで見つけました
https://velog.io/@soo-im/프로젝트-빅데이터콘테스트-with-Colab
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
!apt-get update -qq # 요건 하던지 말던지
!apt-get install fonts-nanum* -qq
import matplotlib.font_manager as fm # plot 폰트 매니저
# 전체 폰트 중에서 나눔 폰트 경로를 확인한다
sys_font=fm.findSystemFonts()
nanum_font = [f for f in sys_font if 'Nanum' in f]
nanum_font
['/usr/share/fonts/truetype/nanum/NanumGothicLight.ttf',
'/usr/share/fonts/truetype/nanum/NanumBrush.ttf',
'/usr/share/fonts/truetype/nanum/NanumSquareRoundL.ttf',...]
import matplotlib as mpl
import matplotlib.pyplot as plt
font_location = '/usr/share/fonts/truetype/nanum/NanumSquareRoundEB.ttf' # 여기에 원하는 폰트 경로를 넣는다
font_name = fm.FontProperties(fname=font_location).get_name()
plt.rc('font', family=font_name)
mpl.rcParams['axes.unicode_minus'] = False # minus(-) 기호가 깨지는 것을 방지
fm._rebuild() # 이걸 안 하면 폰트 설정이 안 된다. 왜인지는 잘 모르겠다...
出力
df.isnull().sum()
は、Nullがないことを確認し、df.pivot_table
をし、突然Nullが発生した.これは、pivot_table(index=..., columns=..., values=...)
からindex
とcolumns
の間のvalue
がない場合に生じる問題である.これはいったい何の話ですか.🙄) この文章には、以下のように転載される具体的な例がある.>> purchase_data
>>
date customer_id purchase_qty
0 01/01 id1 12
1 01/01 id2 5
2 01/02 id1 4
3 01/03 id1 7
>> purchase_data.pivot_table(index='date', columns='customer_id', values='purchase_qty', agg_func=np.sum)
>>
customer_id id1 id2
date
01/01 12 5
01/02 4 NaN
01/03 7 NaN
index
は、pivotテーブルのインデックスを文字通り、columns
はpivotテーブルで使用されるカラムの基準を表す.次に、values
は、計算される値がindex
およびcolumns
であることを意味する.いずれの設定も行わない場合、演算の平均値はvalues
であり、agg_func
オプションを使用する場合、加算、乗算などの演算も可能である.上記の例の選択日は
index
であり、顧客idはcolumns
である.次に、日付とid(意味はないが、例のため)に基づいて、その顧客が購入した数の和を求める.しかし、ご覧のように、01/02と01/03では、id 2のお客様は注文していません.従って、
index
(01/02,01/03)およびcolumns
(id 2)に対応するvalues
(purchate qty)がないため、NANとして処理される.したがって、元のデータにNullがない場合でも、pivot_table
を使用するとNullが発生する可能性があります.この問題を解決するには、対応する値がない場合に、fill_value
オプションに入力する値を入力します.>> purchase_data
>>
date customer_id purchase_qty
0 01/01 id1 12
1 01/01 id2 5
2 01/02 id1 4
3 01/03 id1 7
>> purchase_data.pivot_table(index='date', columns='customer_id', values='purchase_qty', agg_func=np.sum, fill_value=0)
>>
customer_id id1 id2
date
01/01 12 5
01/02 4 0
01/03 7 0
値がない場合は0に処理されることがわかります.3.相関行列で相関の大きい/小さいペアを順に表示したい場合
複数の変数間の相関を同時に表示するために、相関行列とホットマップがよく使用されます.
ソース:seaborn
ただ,変数が多すぎると,どのペアの相関度が最も高いか,最も低いかを見るのは難しい.値を直接確認する方法は次のとおりです.# correlation matrix 만들기
corr_matrix = data.corr()
# 오름차순으로 정렬하되 중복되는 쌍은 제거하기
sort_corr = corr_matrix.unstack().sort_values().drop_duplicates()
# 작은 값 순서대로 10쌍 출력
sort_corr[:10]
unstack()
は行列内の値を系列に変換し、sort_values()
は系列内の値を昇順に並べた.上にdrop_duplicates()
を作らないと、下のように順序だけを変えた同じペアが現れ、値を特定するのが難しい.A B -0.7
B A -0.7
A D -0.6
D A -0.6
逆降順で並べ替える場合は、sort_values(ascending=False)
に置けばいいです.しかし、この場合、A、B、C、...このように、まず自分の相関ペアが現れるので、sort_corr[5:]
のように変数の個数をスキップして出力します.
一般に、unstack()
は、多指数を除去するために使用される.例はこのブログにおいて非常によく示されている.私たちの現在の状況のようにマルチインデックスではないpdDataFrameはunstack()
でpdを表します.Seriesは戻ります.
Reference
この問題について(Pythonの穏やかなヒント), 我々は、より多くの情報をここで見つけました
https://velog.io/@soo-im/프로젝트-빅데이터콘테스트-with-Colab
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
# correlation matrix 만들기
corr_matrix = data.corr()
# 오름차순으로 정렬하되 중복되는 쌍은 제거하기
sort_corr = corr_matrix.unstack().sort_values().drop_duplicates()
# 작은 값 순서대로 10쌍 출력
sort_corr[:10]
A B -0.7
B A -0.7
A D -0.6
D A -0.6
Reference
この問題について(Pythonの穏やかなヒント), 我々は、より多くの情報をここで見つけました https://velog.io/@soo-im/프로젝트-빅데이터콘테스트-with-Colabテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol