1. 程式人生 > >資料分析(四)

資料分析(四)

之前我們學習了numpy,pandas。現在能自己引入資料分析的三劍客不?試一試吧,想不起來,就要看看前面的呦。
來吧,我們一起匯入一下吧!

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

匯入包之後,現在我們就要進行下面的步驟了,想一想要怎樣產生隨機的一個二維陣列呢?

ndarr = np.random.randint(0,10,size=(5,6))
ndarr

OK,下面我們生成一個對應的表格。

# data=None, index=None
s = Series(data=[1,2,3],index=list('abc'))
s

小夥伴們,你們知道顯性索引和隱性索引不?

# s.loc  # 顯式索引
# s.iloc  # 隱式索引
# s.loc['a']
# s.iloc[0]
# s.loc[['a','c']]  # 同一個維度 同時取多個內容 要用中括號 括起來
# s.iloc[[0,2]]
s.loc['a':'c']  # 顯式 切片 開始和結束位置都包括
s.iloc[:]
s.iloc[0:2]  # 隱式 切片 結束位置是不包括的
s.iloc[0:3]
s.iloc[0:]

下面,我們就一起來生成一個成績表

# 成績表
# chinese math english python
# 臨風 班長 孫武空 

# data=None, index=None, columns=None
d = np.random.randint(0,100,size=(3,4))
d
i = ['臨風','班長','孫武空']  # 行索引
c = ['chinese','math','english','python']  # 列索引

OK,做到這裡,我們還沒做完,這只是展示出了資料,我麼還要做成表格形式,這我們要怎麼做呢?想想我們之前引入了什麼?沒錯,就是DataFrame。

df = DataFrame(d,i,c)
df

現在,我們思考一個問題, 行和列 哪個 更重要呢?
行 每一行相當於一個樣本 ,列 每一列是一個特徵 ,所以列更重要。
1)對列進行索引:通過類似字典的方式、通過屬性的方式
按照列名進行索引,獲取到一個Series
df['math']
df.math
2) 對行進行索引:使用.loc[]加index來進行行索引、使用.iloc[]加整數來進行行索引,同樣返回一個Series,index為原來的columns

# df['臨風']  # 直接往中括號中傳入 行索引 找不到
df.臨風
df.loc['臨風']  # 顯式索引
df.iloc[0]  # 隱式所引進

上面的程式碼,第一個是錯的。大家可以都試一下,注意一行一行的執行。
總結:對 列 進行 索引 df[‘列名’] df.列名 得到的是Series,對 行 進行 索引 df.loc[‘行名’] df.iloc[行序號] 得到的是Series
3) 對元素索引的方法

  • 使用列索引
  • 使用行索引
  • 使用values屬性(二維numpy陣列)
df.python.loc['班長']  # 先按列找 找到的是Series 在對Series進行索引
df.loc['班長'].iloc[-1]

df的loc或者iloc提供了更加優雅的方式

df.loc['班長','python']
df.iloc[1,-1]

如果DataFrame的索引記不清 可以直接通過values然後去定位值

df.values  

【注意】 直接使用中括號時:
索引表示的是列索引
切片表示的是行切片

# 直接使用用括號 索引是列索引 切片是行切片
# 最簡單的方式 對列進行切片
df.values[:,1:]

ok,辛苦碼字,感覺不錯的點個贊吧,明天會繼續更新。