初心者の独学でのプログラミング学習はとてもツライ…
プログラミングをマスターしたい!
今のIT業界はプログラミングエンジニアが不足していると言われています。
高収入の職業とも言われる分野もありますし、AI、機械学習、ディープラーニング、IOTといった注目される分野が目白押しです。でも、いざ初心者がプログラミングをマスターしようとすると…
- 本を読んだりネットの記事で自力で勉強しているけど限界を感じる
- プログラミングスクールに定期的に通うのは面倒だ
- 地方に住んでると家の近くにプログラミングスクールなんてない
- どのプログラミング言語を学べばいいのか悩む
- 実際の就職や転職にプログラミングが活かせるのか心配だ
など、プログラミングを自分で勉強しようとすると悩みが尽きません。
プログラミングに詳しい友人に教えてもらおうと思っても、そんな友人なんて滅多にいません。いたとしても細かく教えてくれるほど時間に余裕がある人はいないでしょう。
そんな独学でプログラミングをマスターするのに限界を感じてる方に、オンラインプログラミングスクールをがおすすめです。
PandasはPythonでデータ解析を行うための機能を持ったライブラリで、数表や時系列データを操作するためのデータ構造を作ったり演算を行うことができます。
ここではPandasの基本的な使い方を一気に学んでいきます。
Anacondaを使っているなら、Pandasはすでにインストールされているのではないかと思いますが、入っていなければターミナルからcondaコマンドやpipコマンドでインストールしましょう。
NumPy同様に、ここでもjupyter notebookを利用します。
Pandasの基本的な使い方を一気に学ぶ
jupyter notebookを起動したら、まずはPandasをインポートしましょう。
1 2 |
import numpy as np import pandas as pd |
NumPyを利用しての計算も後々出てくるので、合わせてインポートします。Pandasは慣例としてpdとして利用します。
Series()で1次元のデータを作る
まずPandasで1次元のデータを作ってみます。これにはSeries()を使います。
リストに入ったデータを利用して次のように書きます。
1 2 3 4 |
import numpy as np import pandas as pd s = pd.Series([1, 2, np.nan, 4]) s |
(以降はインポート文は省略します)
4つのデータが入っているのがわかりますね。
[shift]+[return]キーで実行して、sを表示します。
インデックスと対応させてデータが表示されているのがわかります。
インデックスを指定して値を表示したり、メソッドを利用して合計を求めたりすることができます。
1 2 |
s[1] s.sum() |
このあたりはNumPyと同じような操作ですから他のメソッドも利用できますね。ちなみにドット(.)を入力した時に[tab]キーを押せば、メソッドの一覧が表示されます。
DataFrame()で2次元のデータを作る
次は2次元のデータです。こちらの方が利用する機会が多いでしょう。DataFrame()を使って2次元の値を与えることで作成できます。
次のように辞書型データを使っても作ることができます。
1 2 |
df = pd.DataFrame({'A': [10, 20], 'B': [15, 45]}) df |
慣例として変数をdfにすることが多いです。
これを実行するとこうなります。
このように縦横のマトリクスに対応したデータが表示されます。
データのタイプは次のようにして確認できます。
1 |
df.dtypes |
DataFrame()を操作する
DataFrame()を使った2次元のデータの作成はわかりましたが、本来のデータは多く、もっと複雑ですので整理などが必要となります。
そこでDataFrame()の様々な基本操作の方法をここで一気にみていきましょう。
まず6行4列のデータをrandomを使って作ってみます。
1 2 |
df = pd.DataFrame(np.random.randn(6, 4)) df |
ここまではいいのですが、データの項目が一体何なのか、これでは意味を理解することができません。
データにラベルをつける
そこで、縦と横の項目にラベルをつけていきます。
1 2 |
df = pd.DataFrame(np.random.randn(6, 4), pd.date_range('20180101', periods=6), columns=['A', 'B','C', 'D']) df |
date_range()を使って縦の項目にラベルをつけます。ここでは日付を入れました。preriodsにはデータの数を指定します。横の項目にはcolumsにリストでラベルを指定してあげます。
実行するとこうなります。
縦、横それぞれの項目が表示されたので、データの意味がわかりやすくなりました。
head()でデータの先頭、tail()でデータの末尾を表示する
データの先頭行を表示するならdead()を使います。
1 |
df.head(1) |
ここでは数字の1を入れて操作しましたが、丸括弧()に数字を入れなければ、先頭から5つのデータが表示されます。
末尾のデータを表示させるならtail()を使います。
1 |
df.tail(3) |
3を入れているので末尾から3つのデータを表示しています。数値を入れなければ5つのデータが表示されます。
index, columns, valuesで縦軸、横軸、中身を表示
データの縦軸の表題(インデックス)、横軸の表題(カラム)、データの値をそれぞれ表示させるには次のコードを使います。
1 2 3 |
df.index df.columns df.values |
describe()で基本統計量を取得する
describe()を使えば基本統計量を取得できます。
1 |
df.describe() |
それぞれ、件数 (count)、平均値 (mean)、標準偏差 (std)、最小値(min)、第一四分位数 (25%)、中央値 (50%)、第三四分位数 (75%)、最大値 (max) を確認できます。
行と列の転換、値のソート
行と列の転換にはTを、値のソートにはsort_values()を使います。
1 2 |
df.T df.sort_values('C') |
Tで縦横が変換されているのがわかります。ソートはCの項目で小さい順に並び替えられているのがわかります。
データのスライス
リストと同じように、データの縦方向のインデックスやラベルの値を使って範囲指定してデータをスライスすることができます。
1 2 |
df[1:4] <span class="n">df</span><span class="p">[</span><span class="s1">'20180102'</span><span class="p">:</span><span class="s1">'20180104'</span><span class="p">]</span> |
行、列を指定してデータを参照する
行、列を指定してデータを参照するには、loc、ilocを使います。
locは行、列のラベルを使います。
1 2 3 4 |
<span class="n">df</span><span class="o">.</span><span class="n">loc</span><span class="p">[</span><span class="s1">'20180101'</span><span class="p">] </span>df.loc['20180103', ['A', 'B']] df.loc['20180102':'20180104', ['A', 'B']] df.loc[:, ['A', 'B']] |
ilocは行、列の番号を使います。
1 2 |
df.iloc[0, 0] df.iloc[0:2, 0:2] |
不等号で取り出す
ある条件のデータでゼロより大きい値を取り出してみます。
まずラベルAのデータがゼロより大きい時のデータ。そしてゼロより大きい全てのデータ。言葉で書くとわかりずらいので、次のような場合です。
1 2 |
df[df.A > 0] df[df > 0] |
上側がAで該当する列のデータを抽出、下側は0以下のデータはNaNと表示しています。
copy()と列の追加
もう一度、dfの内容を確認しておきます。
ここで、このデータをコピーして、E列を加えてデータを入れてみたいと思います。
1 2 3 |
df2 = df.copy() df2['E'] = ['a', 'a', 'd', 'c', 'd', 'b'] df2 |
copy()で複製することができます。この複製をdf2とします。これにE列をしてして値を入れています。
E列に値が入っているのがわかります。
isin()を使って、値が入ってる列のデータを取り出すことができます。
1 |
df2[df2['E'].isin(['a', 'c'])] |
新たな1次元データを列データに加える
ここで1次元のデータを作ってみます。
1 2 |
s = pd.Series([1, 2, 3, 4, 5, 6], index=pd.date_range('20180101', periods=6)) s |
このデータsをdfに項目Eとして付け加えるには次のように書きます。
1 2 |
df['E'] = s df |
shift()でデータをシフトする
shift()を使ってデータをズラすことができます。
1 |
df.shift(1) |
元の1行目から下にずれているのがわかると思います。
concat()で連結する
扱いやすいように新しい小さなデータを作ります。
1 2 |
df = pd.DataFrame(np.random.randn(2, 2)) df |
2行2列のデータを作ります。このデータを2つ連結するには、concat()を使います。
1 |
pd.concat([df, df]) |
行を増やす形で連結されているのがわかります。
append()で追加する
また新たにデータを作ります。
1 2 |
df = pd.DataFrame(np.random.randn(8, 4), columns=['A', 'B', 'C', 'D']) df |
ここにデータの1行目を参照して、新しい一次元データを作ってsに代入します。
1 2 |
s = df.iloc[0] s |
このデータsを、元のdfにappend()で追加します。
1 |
df.append(s) |
最後の行にsのデータが追加されているのがわかります。
ただ行番号の0が2つあってちょっとデータとして扱うにはおかしくなる場合がありますよね。
そこで次のように、ignore_index=Trueとして書き直すことで、新しく追加されるデータに新しい行番号が割り振られます。
1 |
df.append(s, ignore_index=True) |
行番号が整えられました。
groupby()で要素をグループ化
再度、作業用に新しいデータを作ります。
1 2 |
df = pd.DataFrame({'A': ['a', 'b', 'a', 'b'], 'B': np.random.randn(4)}) df |
このデータには、A列のデータにa, bがそれぞれ2つ入っています。groupby()を使えば、そ子に含まれる同じ要素をグループ化することができます。
次のコードは要素をまとめてその要素ごとに合計します。
1 |
df.groupby('A').sum() |
a, bそれぞれの値がまとめられてsum()で合計されているのがわかります。
最後に
Pandasの基本的な操作を簡単ですが一気に見てきました。途中、NumPyを途中で使うことがあるように、どちらもデータの扱いには必要なライブラリです。
もちろんこれ以外にも様々な機能があり、データを外部から読み込むライブラリもあとで扱います。これで終わりではありませんので、さらに詳しいところは別のところでじっくりやろうと思います。
自宅学習はオンラインプログラミングスクールを活用!
自宅学習にはオンラインプログラミングスクールがおすすめ!
オンラインプログラミングスクールは独学でプログラミングを学習する時のデメリットを解消する仕組みが備わっています。
気になるところは…
学習がオンラインで完結するのはもちろんですが、独学ではできない質問サポートがあるかどうか。わからないことを現役のエンジニアが質問に答えてくれるといいですよね。
受講者個人に担当のメンターがつき、マンツーマンで学習の相談に乗ってくれることも必要で、ITエンジニアの世界についても伺えたりもすると幅が広がります。
オンライン面談だけでなく、チャット機能を使って気軽に質問を投げかけることができることも大切です。
また、オリジナルプロダクトの開発とサポートがコースの中に組み込まれていて、独学ではなかなか難しい実践的なスキルの習得にもつなげたい。
プログラミングをマスターした後の実際の仕事につながる転職サポートでがあると、ITエンジニアの世界に飛び込むのに不安が解消されます。
そんな豊富なメニューが揃っているおすすめのオンラインプログラミングスクールがこちらにあります。
TechAcademyはおすすめのオンラインプログラミングスクール!
オンラインのプログラミングスクールでは、テックアカデミーの充実度が目を見張ります。
オンラインで受講が完結するので、自宅学習でプログラミングをマスターしたい人にはテックアカデミーがおすすめです。
メンター制度も現役のプロが対応してくれます。大学生などが対応しているスクールに比べて本気度と専門性が違います。メンター制度の無いスクールもありますし、担当では無いメンターが対応するスクールもあったりするので、相談の質が違いますね。
チャットサポートもあるので、それが無いスクールに比べて相談の気軽さの違いがあります。
プロダクト開発のサポートで実践力が養われるだけでなく、どの講座を利用しても転職サポートが受けられるのはありがたい。
用意されているコースも、初心者向けのプログラミングコースから、Python、Java、PHP、iPhoneアプリ、AndroidといったITエンジニアのベースとなる主要な言語だけでなく、AI、データサイエンス、ブロックチェーン、webアプリケーションと行った実践的なコースまで用意しています。
他にも、webデザインやUI/UXデザイン、動画編集、webディレクションやwebマーケティングといったプログラミング以外での役立つコースまであります。
このようなたくさんの選択肢から自分にあったコースを選ぶことがでるのがテックアカデミーです。
コースの期間も短期間でマスターしたり、長期の受講でじっくり取り組むコースを選ぶこともできます。
複数講座のセットコースを利用することで大幅な割引が受けらるので、お得に受講することもできます。
無料体験もありますので、プログラミング学習でオンラインスクールを考えている人はTechAcademyをぜひ利用してみてください。