「大人の教養・知識・気付き」を伸ばすブログ

一流の大人(ビジネスマン、政治家、リーダー…)として知っておきたい、教養・社会動向を意外なところから取り上げ学ぶことで“気付く力”を伸ばすブログです。データ分析・語学に力点を置いています。 →現在、コンサルタントの雛になるべく、少しずつ勉強中です(※2024年1月21日改訂)。

MENU

Pythonによるデータ分析(その11/X)

 仕事上、早々に\mathrm{Python}を使えるようにしないといけないため、

を基に学んでいく。

4. pandas入門

 \mathrm{pandas}は多くのコーディング用法を\mathrm{NumPy}から採用しているが、テーブル形式のデータや不均一なデータを扱うために設計されている。

4.1 pandasのデータ構造

 \mathrm{pandas}を始めるには、まずシリーズ(\mathrm{series})とデータフレーム(\mathrm{DataFrame})に慣れる必要がある。

4.1.1 シリーズ(series)

 シリーズ(\mathrm{series})は1次元の配列のようなオブジェクトである。

##################
### pandas入門 ###
##################

import numpy as np
import pandas as pd
from pandas import Series, DataFrame

print('***Seriesの生成***')
# Seriesの生成
obj = pd.Series([4, 7, -5, 3])
print(obj)

# values, index属性で値、インデックスにアクセスする
obj_values = obj.values
obj_idx = obj.index

print(obj_values)
print(obj_idx)


# インデックス付きSeriesの生成
print('')
print('***Seriesへのアクセス***')
obj2 = pd.Series([4, 7, -5, 3], index = ['d','b','a','c'])
print(obj2)
obj2_idx = obj2.index
print(obj2_idx)


# 部分配列へのアクセス
print('')
print('***部分配列へのアクセス***')
print(obj2['a'])    # インデックスラベルの指定でアクセス可能
obj2['d'] = 6       # 配列成分の書き換え
print(obj2['d'])
obj2[['c','a','b']] # リストで複数成分にアクセス可


# 条件指定によるフィルタリング
print('')
print('***条件指定によるフィルタリング***')
print(obj2[obj2 > 0])
print(obj2 * 2)
print(np.exp(obj2))

# シリーズは、インデックスと値がマッピングされた固定長の順序付き辞書型と見なすこともできる
print('')
print('***インデックスへのアクセス***')
print('b' in obj2) # bというインデックスが存在するか
print('e' in obj2)
##########################
### SeriesとDictの関係 ###
##########################

import pandas as pd
from pandas import Series, DataFrame

# 辞書からSeriesの生成
print('***辞書からSeriesの生成***')
sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}

obj3 = pd.Series(sdata)

print(obj3.values)
print(obj3.index)

# インデックスの上書き
states = ['California', 'Ohio','Oregon', 'Texas']
obj4 = pd.Series(sdata, index = states)
print(obj4)

# 欠損値へのアクセス
print('')
print('*欠損・NAがあるかどうか:')
print(pd.isnull(obj4))
print('')
print('*欠損・NAで無い値があるかどうか')
print(pd.notnull(obj4))
print('')
print('*インスタンスメソッド(obj4.isnull())としても取得可')
print(obj4.notnull())

# 異なるSeriesに対して算術演算を施すと、自動的にインデックスを揃えてくれる
print(obj3)
print(obj4)
print(obj3 + obj4)

# name属性へのアクセス
print('')
print('name属性へのアクセス')
obj4.name = 'population'
obj4.index.name = 'state'
print(obj4)
プライバシーポリシー お問い合わせ