差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
python:numpy_scipy_matplotlib [2019/07/24 17:45] – [Windows] ともやん | python:numpy_scipy_matplotlib [2020/04/16 03:38] (現在) – ともやん | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== | + | < |
+ | < | ||
+ | #result pre { | ||
+ | height: 200px; | ||
+ | overflow: scroll; | ||
+ | overflow-x: hidden; | ||
+ | } | ||
+ | #logo_numpy { | ||
+ | background-color: | ||
+ | width: fit-content; | ||
+ | padding: 10px; | ||
+ | } | ||
+ | #logo_numpy p { | ||
+ | margin: 0; | ||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | ====== | ||
+ | |||
+ | ====== NumPy, SciPy, Matplotlib, CuPy のインストール ====== | ||
===== Linux ===== | ===== Linux ===== | ||
行 12: | 行 31: | ||
※CuPy をインストールするには [[windows: | ※CuPy をインストールするには [[windows: | ||
- | ===== pandas のインストール | + | ====== |
+ | <WRAP # | ||
+ | {{: | ||
+ | </ | ||
+ | 本家: [[https:// | ||
+ | ソースコード: | ||
+ | < | ||
+ | $ git clone https:// | ||
+ | </ | ||
+ | リファレンス: | ||
+ | \\ | ||
+ | **NumPy** は、プログラミング言語Pythonにおいて数値計算を効率的に行うための拡張モジュールである。効率的な数値計算を行うための型付きの多次元配列(例えばベクトルや行列などを表現できる)のサポートをPythonに加えるとともに、それらを操作するための大規模な高水準の数学関数ライブラリを提供する。\\ | ||
+ | [[https:// | ||
- | ==== Linux ==== | + | ====== SciPy ====== |
+ | [[https:// | ||
+ | \\ | ||
+ | **SciPy** は、プログラミング数学、科学、工学のための数値解析ソフトウェアである。無料かつオープンソースで、Windows・Linux・macOSを含むオペレーティングシステムで動作する。ScientificPythonとは無関係である。\\ | ||
+ | [[https:// | ||
+ | |||
+ | ====== Matplotlib ====== | ||
+ | [[https:// | ||
+ | \\ | ||
+ | **Matplotlib** は、プログラミング言語Pythonおよびその科学計算用ライブラリNumPyのためのグラフ描画ライブラリである。オブジェクト指向のAPIを提供しており、様々な種類のグラフを描画する能力を持つ。描画できるのは主に2次元のプロットだが、3次元プロットの機能も追加されてきている。描画したグラフを各種形式の画像(各種ベクトル画像形式も含む)として保存することもできるし、wxPython、Qt、GTKといった一般的なGUIツールキット製のアプリケーションにグラフの描画機能を組みこむこともできる。MATLABの対話環境のようなものを提供するpylabというインタフェースも持っている。Matplotlibは、BSDスタイルのライセンスの下で配布されている。\\ | ||
+ | [[https:// | ||
+ | |||
+ | ====== CuPy ====== | ||
+ | {{: | ||
+ | 本家: [[https:// | ||
+ | ソースコード: | ||
+ | < | ||
+ | $ git clone https:// | ||
+ | </ | ||
+ | リファレンス: | ||
+ | \\ | ||
+ | **CuPy** は CUDA 上の NumPy 互換の多次元配列の実装である。CuPy は cupy.ndarray、コアの多次元配列クラス、およびそれに関する多くの関数で構成されている。それは numpy.ndarray インターフェイスのサブセットをサポートする。\\ | ||
+ | [[https:// | ||
+ | |||
+ | ====== Pandas のインストール ====== | ||
+ | 本家: [[https:// | ||
+ | \\ | ||
+ | **Pandas** は、プログラミング言語 Python において、データ解析を支援する機能を提供するライブラリである。特に、数表および時系列データを操作するためのデータ構造と演算を提供する。Pandas は BSD ライセンスのもとで提供されている。\\ | ||
+ | |||
+ | ===== Linux ===== | ||
< | < | ||
$ pip3 install pandas | $ pip3 install pandas | ||
</ | </ | ||
- | ==== Windows ==== | + | ===== Windows |
< | < | ||
> pip install pandas | > pip install pandas | ||
</ | </ | ||
- | <WRAP prewrap 100%> | + | <WRAP prewrap 100% #result> |
< | < | ||
Collecting pandas | Collecting pandas | ||
行 36: | 行 96: | ||
Installing collected packages: pytz, pandas | Installing collected packages: pytz, pandas | ||
Successfully installed pandas-0.25.0 pytz-2019.1 | Successfully installed pandas-0.25.0 pytz-2019.1 | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ===== 使い方 ===== | ||
+ | |||
+ | ==== 行によって列数の異なる CSV を DataFrame 化する方法 ==== | ||
+ | <file csv data.csv> | ||
+ | col1 col2 col3 col4 col5 | ||
+ | 1 2 3 4 | ||
+ | 1 2 3 | ||
+ | 1 2 3 4 5 | ||
+ | </ | ||
+ | <code python> | ||
+ | In [1]: import csv | ||
+ | |||
+ | In [2]: reader = csv.reader(' | ||
+ | |||
+ | In [3]: reader | ||
+ | Out[3]: < | ||
+ | |||
+ | In [4]: with open(' | ||
+ | ...: | ||
+ | ...: data = [row for row in reader] | ||
+ | ...: | ||
+ | |||
+ | In [5]: data | ||
+ | Out[5]: | ||
+ | [[' | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | In [6]: header, values = data[0], data[1:] | ||
+ | |||
+ | In [7]: import pandas as pd | ||
+ | |||
+ | In [8]: df = pd.DataFrame(values, | ||
+ | |||
+ | In [9]: print(df) | ||
+ | col1 col2 col3 col4 col5 | ||
+ | 0 1 2 3 | ||
+ | 1 1 2 3 None None | ||
+ | 2 1 2 3 | ||
+ | </ | ||
+ | |||
+ | ==== データフレームのグループ化(集計) ==== | ||
+ | <WRAP prewrap 100%> | ||
+ | <code python> | ||
+ | In [1]: import pandas as pd | ||
+ | |||
+ | In [2]: df = pd.DataFrame(columns=[' | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | In [3]: df | ||
+ | Out[3]: | ||
+ | col1 col2 col3 col4 | ||
+ | 0 aaa | ||
+ | 1 bbb | ||
+ | 2 ccc | ||
+ | 3 aaa | ||
+ | 4 bbb | ||
+ | 5 ccc | ||
+ | 6 aaa | ||
+ | 7 bbb | ||
+ | 8 ccc | ||
+ | |||
+ | # groupby のデフォルト動作はグループラベルが index になり集計列が単一の場合は Series が返る | ||
+ | In [4]: grouped = df.groupby(df[' | ||
+ | |||
+ | In [5]: type(grouped) | ||
+ | Out[5]: pandas.core.series.Series | ||
+ | |||
+ | In [6]: grouped | ||
+ | Out[6]: | ||
+ | col1 | ||
+ | aaa 6 | ||
+ | bbb 6 | ||
+ | ccc 6 | ||
+ | Name: col2, dtype: int64 | ||
+ | |||
+ | In [7]: pd.DataFrame(grouped) | ||
+ | Out[7]: | ||
+ | col2 | ||
+ | col1 | ||
+ | aaa 6 | ||
+ | bbb 6 | ||
+ | ccc 6 | ||
+ | |||
+ | # as_index=False にするとグループラベルが列になり DataFrame が返る | ||
+ | In [8]: grouped = df.groupby(df[' | ||
+ | |||
+ | In [9]: type(grouped) | ||
+ | Out[9]: pandas.core.frame.DataFrame | ||
+ | |||
+ | In [10]: grouped | ||
+ | Out[10]: | ||
+ | col1 col2 | ||
+ | 0 aaa 6 | ||
+ | 1 bbb 6 | ||
+ | 2 ccc 6 | ||
</ | </ | ||
</ | </ | ||