[DAY 4]開発ログ:Numpy&Pandas


1.学習内容

  • Numpy
  • Pandas
  • 2.詳細


    Numpy # Numpy ##Numpyの概要 NumpyはPythonで科学計算に使用されるコアライブラリです。 Numpyは、多次元配列オブジェクトと配列とともに動作するツールを提供します。 しかし,Numpy自体は高度なデータ解析機能を提供していないため,Numpyアレイとアレイベースの計算が理解できる. パンダのような道具をより効果的に使う必要がある。 ###作成基準 array関数を使用したアレイの作成 import numpy as np #カレンダの作成 arr = np.array([1,2,3,4]) # print(arr) #[1 2 3 4] # type(arr) #numpy.ndarray np.zeros((3,3)) array([ [0., 0., 0.], [0., 0., 0.], [0., 0., 0.] ]) # np.ones((3,3)) array([ [1., 1., 1.], [1., 1., 1.], [1., 1., 1.]]) np.empty((4,4)) np.arange(10) #array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) ###Andarray配列の形状、回数、データ型を確認 arr = np.array([[1,2,3],[4,5,6]]) arr.shape #(2, 3) arr.ndim #2 arr.dtype #dtype('int32') arr_float = arr.astype(np.float64) print(arr_float) #[ [1. 2. 3.] [4. 5. 6.]] arr_float.dtype #dtype('float64') arr1 = np.array([[1,2],[3,4]]) arr2 = np.array([[5,6],[7,8]]) # arr3 = arr1 * arr2 # arr3 = np.add(arr1, arr2) arr3 = np.multiply(arr1, arr2) print(arr3) #[ [ 5 12] [21 32] ] Numpy配列の演算は、演算子(+、-、*、/)または関数(追加、減算、乗算、除算)であってもよい。 ###Andarrayタイル カレンダー配列の平滑化 #タイルスライス arr = np.array([[1,2,3],[4,5,6],[7,8,9]]) arr_1 = arr[:2, 1:3] print(arr_1) #[ [2 3] [5 6]] arr_1.shape #(2, 2) arr_int = np.arange(10) # arr_int print(arr_int[0:8:3]) #[0 3 6] print(arr[0,2]) #3 arr = np.array([[1,2,3],[4,5,6]]) idx = arr > 3 print(idx) #[[False False False] [ True True True]] print(arr[idx]) #[4 5 6] import numpy as np ##winequality-red.csvファイルを読み込みます redwine = np.loadtxt(fname = 'samples/winequality-red.csv', delimiter=';', skiprows = 1) redwine.shape #(1599, 12) print(redwine) type(redwine) #numpy.ndarray print(redwine.sum()) #152084.78194 print(redwine.mean()) #7.926036165311652 print(redwine.mean(axis=0)) print(redwine[:,0].mean()) #8.31963727329581 #最初の軸(0番配列)のみを取得する

    Pandas # Pandas ##データ構造:SeriesとDataframe Pandasが提供するデータ構造はSeriesとDataFrameの2種類があり、Seriesはクロック列のようなデータとしてインデックスと値が存在し、DataFrameはバイナリデータをマトリクス化するフレームワークを有する。このようなデータ構造により、テーブル列、非テーブル列データを統合して処理することができる。 ## series import pandas as pd from pandas import Series, DataFrame fruit = Series([2500,3800,1200,6000], index=['apple','banana','pear','cherry']) fruit print(fruit.values) #[2500 3800 1200 6000] print(fruit.index) -> #Index(['apple', 'banana', 'pear', 'cherry'], dtype='object') fruitData = {'apple':2500, 'banana':3800, 'pear':1200, 'cherry':6000} fruit = Series(fruitData) print(type(fruitData)) print(type(fruit)) fruit fruit.name = 'fruitPrice' fruit fruit.index.name = 'fruitName' fruit fruitData = {'fruitName':['apple','banana','pear','cherry'], 'fruitPrice':[2500,3800,1200,6000], 'num':[10,5,3,8] } fruitName = DataFrame(fruitData) fruitName fruitFrame = DataFrame(fruitData, columns = ['fruitPrice','num','fruitName']) fruitFrame fruitFrame['fruitName'] fruitFrame.fruitName fruitFrame['Year'] = '2016' fruitFrame variable = Series([4,2,1], index=[0,2,3]) print(variable) fruitFrame['stock'] = variable fruitFrame fruit = Series([2500,3800,1200,6000],index=['apple','banana','pear','cherry']) fruit new_fruit = fruit.drop('banana') new_fruit fruitData fruitName = fruitData['fruitName'] fruitName #['apple', 'banana', 'pear', 'cherry'] fruitFrame = DataFrame(fruitData, index=fruitName, columns=['fruitPrice','num']) fruitFrame fruitFrame2 = fruitFrame.drop(['apple','cherry']) fruitFrame2 fruitFrame3 = fruitFrame.drop('num', axis=1) fruitFrame3 fruit fruit['apple':'pear'] fruit[0:1] fruitFrame['apple':'banana'] fruit1 = Series([5,9,10,3], index=['apple','banana','pear','cherry']) fruit2 = Series([3,2,9,5,10], index=['apple','orange','banana','cherry', 'mango']) fruit1 + fruit2 fruitData1 = {'Ohio' : [4,8,3,5],'Texas' : [0,1,2,3]} fruitFrame1 = DataFrame(fruitData1,columns=['Ohio','Texas'],index = ['apple','banana','cherry','peer']) fruitData2 = {'Ohio' : [3,0,2,1,7],'Colorado':[5,4,3,6,0]} fruitFrame2 = DataFrame(fruitData2,columns =['Ohio','Colorado'],index = ['apple','orange','banana','cherry','mango']) fruitFrame1 fruitFrame2 fruitFrame1 + fruitFrame2 fruit fruit.sort_values(ascending=False) fruit.sort_index() fruitFrame fruitFrame.sort_index() fruitFrame.sort_values(by=['fruitPrice','num']) german = pd.read_csv('http://freakonometrics.free.fr/german_credit.csv') german list(german.columns.values) german_sample = german[['Creditability','Duration of Credit (month)','Purpose','Credit Amount']] german_sample german_sample.min() german_sample.max() german_sample.mean() german_sample.describe german_sample = german[['Duration of Credit (month)','Credit Amount','Age (years)']] german_sample.corr() german_sample = german[['Credit Amount','Type of apartment']] german_sample german_grouped = german_sample['Credit Amount'].groupby( german_sample['Type of apartment'] ) german_grouped.mean() german_sample = german[['Credit Amount','Type of apartment','Purpose']] german_grouped = german_sample['Credit Amount'].groupby( [german_sample['Purpose'],german_sample['Type of apartment']] ) german_grouped #<pandas.core.groupby.generic.SeriesGroupBy ~~ german_grouped.mean() グループ間で繰り返す グループの繰り返し german=pd.read_csv("http://freakonometrics.free.fr/german_credit.csv") german_sample=german[['Type of apartment','Sex & Marital Status','Credit Amount']] for type , group in german_sample.groupby('Type of apartment'): print(type) print(group.head(n=3)) for (type,sex) , group in german_sample.groupby(['Type of apartment','Sex & Marital Status']): print((type,sex)) print(group.head(n=3)) ##データ分析サンプル惑星データ Seabornパッケージを使用して提供される惑星データセット。 Seaborn Packiddyは、天文学者が他の星の周りで発見した惑星に関する情報を提供し、2014年までに発見された1000以上の外星惑星の詳細を含む。 import seaborn as sns planets = sns.load_dataset('planets') planets.shape #(1035, 6) planets.head Null#dropna()の削除 planets.dropna().describe() import pandas as pd births = pd.read_csv('https://raw.githubusercontent.com/jakevdp/data-CDCbirths/master/births.csv') births births.head births['decade'] = (births['year']) // 10 * 10 births births.pivot_table('births', index='decade', columns='gender', aggfunc='sum') %matplotlib inline import matplotlib.pyplot as plt sns.set() births.pivot_table('births', index='decade', columns='gender', aggfunc='sum').plot()

    3.今日の感想

    <ol>
    	<li>사실 아직 정확하게 Numpy와 Pandas를 이해하진 못함</li>
    	<li>Numpy는 파이썬에 대한 전반적인 라이브러리</li>
        <li>Pandas는 테이블을 만든다는 개념</li>
        <li>변수랑 메소드명이 은근 헷갈림. 자주 보고 익숙해져야할듯</li>
    </ol>