1. 程式人生 > >《利用python進行資料分析》之整數索引

《利用python進行資料分析》之整數索引

  • 《利用python進行資料分析》之整數索引
# -*- coding: utf-8 -*-
"""
Created on Sat Nov 17 22:23:46 2018

@author: muli
"""

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

#整數索引
#操作由整數索引的pandas物件常常會讓新手抓狂,
#因為他們跟內建的python資料結構(如列表和元組)在索引語義上有些不同。
#例如,你可能認為下面的程式碼不會報錯。
ser=Series(np.arange(3.))
print(ser)
print("------")
# 索引範圍是[0,2]
print(ser[0])

print("++++++++++")
#雖然pandas會“求助於”整數索引,但是沒有哪種方法能夠既不引入bug,又能解決問題的。
#我們有一個含有0,1,2的索引,但是很難推斷出使用者想要什麼:
ser2=Series(np.arange(3.),index=['a','b','c'])
print(ser2[-1])

print(ser.ix[:1])
print("++++++++++")

#如果需要可靠的,不考慮索引型別的,基於位置的索引,
#可以使用Series 的 iget_value 方法和DataFrame的irow和icol方法:

ser3=Series(range(5),
            index=[-5,1,3,0,10])

print(ser3)
print("======")
# 報錯:'Series' object has no attribute 'iget_value'
#print(ser3.iget_value(2))
#loc
#print(ser3.loc(2))
print(ser3.iat[2])


print("*************************")
print("*************************")
frame=DataFrame(np.arange(6).reshape(3,2),
                index=[2,0,1])

print(frame)
print("~~~~~~~~~~~~~~~~~~~")
# 報錯:'DataFrame' object has no attribute 'icol'
# 原因:icol is deprecated.
#print(frame.icol(0))


#iloc[:, i] 
# 選取的是 列
#print(frame.iloc[:, 1])
# 選取的是 行
print(frame.iloc[1, :])