資料分析(四)
阿新 • • 發佈:2018-12-21
之前我們學習了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,辛苦碼字,感覺不錯的點個贊吧,明天會繼續更新。