numpyとpandasの基本機能まとめ
 Author: mito.shimada

numpyの基本機能まとめ

import numpy as np

# 二次元配列
sample = np.array([[1, 2], [3, 4]])

# 行数/列数取得
sample.shape

# 等差数列の作成
sample2 = np.arange(start=1, stop=5, step=1)
# array([1, 2, 3, 4])

# 同じ値の配列
sample3 = np.tile(0, 4)
# array([0, 0, 0, 0])

# ゼロ埋め
sample4 = np.zeros(5)
# array([0., 0., 0., 0., 0.])

# slice
sample5 = np.array([1, 2, 3, 4])
sample5[1:3] # array([2, 3])

# 二次元のslice
sample6 = np.array([
    [1, 2, 3, 4, 5],
    [6, 7, 8, 9, 10]
])
sample6[0, 3] # 4
sample6[1, 1:3] # array([7, 8])

pandasの基本機能まとめ

Data Frame

import pandas as pd
# DataFrameの基本。列が異なれば、数値と文字列を混在させることが可能
sample_df = pd.DataFrame({
    'col1': sample2,
    'col2': sample2 * 2,
    'col3': ['a', 'b', 'c', 'd']
})
print(sample_df)
#    col1  col2 col3
# 0     1     2    a
# 1     2     4    b
# 2     3     6    c
# 3     4     8    d
sample_df # Jupyterで綺麗なtableが表示される

CSV読み込み

data = pd.read_csv('./sample.csv')
data

結合

df1 = pd.DataFrame({
    'col1': np.array([1, 2, 3]),
    'col2': np.array(['a', 'b', 'c'])
})
df2 = pd.DataFrame({
    'col1': np.array([4, 5, 6]),
    'col2': np.array(['d', 'e', 'f'])
})
# 縦結合
print(pd.concat([df1, df2]))
#    col1 col2
# 0     1    a
# 1     2    b
# 2     3    c
# 0     4    d
# 1     5    e
# 2     6    f

# 横結合
print(pd.concat([df1, df2], axis=1))
#    col1 col2  col1 col2
# 0     1    a     4    d
# 1     2    b     5    e
# 2     3    c     6    f

データ抽出

sample_df = pd.DataFrame({
    'col1': sample2,
    'col2': sample2 * 2,
    'col3': ['a', 'b', 'c', 'd']
})
print(sample_df)
# 列を指定
print(sample_df.col2)
# 2列取得
print(sample_df[['col1', 'col2']])
# 特定列をなくす
print(sample_df.drop('col1', axis=1))

# 最初の2行
print(sample_df.head(n=2))
# index指定
print(sample_df.query('index == 1'))
# col3 == a
print(sample_df.query('col3 == "a"'))
# or
print(sample_df.query('col3 == "a" | col3 == "c"'))
# and
print(sample_df.query('col3 == "a" & col1 ==1'))
# 列をnumpy配列に変換
np.array(sample_df.col2)