pandas 的index用途


# pandas的索引index的用途
# 把數據存儲於普通的column列也能用於數據查詢,那使用index有什么好處?
#     1、更方便的數據查詢
#     2、使用index可以獲得性能提升
#     3、 自動的數據對其功能
#     4、更多強大的數據結構支持


import pandas as pd 

# 1 使用index查詢數據
# drop==False,讓索引列保持在columns
df.set_index("userId",inplace=True,drop = False)
df.head()
df.index
# 使用index的查詢方法
df.loc[500].head(5)
# 使用column的condition查詢方法
df.loc[df["userId"]==500].head()


# 2 使用index會提升查詢性能
#    如果index是惟一的,pandas會使用哈希表優化,查詢性能為O(1)
#    如果index不是惟一的,但是有序,pandas會使用二分查找算法,查詢性能為O(logN
#    如果index是完全隨機的,那么每次查詢都要掃描去哪表,查詢性能為O(N)

# 實驗一:完全隨機的順序查詢
# 將數據隨機打散
from sklearn.utils import shuffle
df_shuffle = shuffle(df)#打散數據

# 索引是否是遞增的
df_shuffle.index.is_mononic_increasing
# 判斷索引是否是唯一的
df_shuffle.index.is_unique
# 計時,查詢id ==500數據的性能
%timeit df_shuffle.loc[500]

# 實驗二:將index排序后的查詢
df_sorted = df_shuffle.sort_index()
df_sorted.head()
#索引是否是遞增的
df_sorted.index.is_monotonic_increasing
df_sorted.index.is_unique
%timeit df_sorted.loc[500]

#  3 使用index能自動對齊數據(包括series & dataframe)
s1 = pd.Series([1,2,30],index= list("abc"))
s2 = pd.Series([2,3,4],index=list("bcd"))
s1 + s2 

#  4 使用index更多更強大的數據結構支持
# 很多強大的數據結構
#    
#    Categoricallndex ,基於分類數的index,提升性能
#    Multilndex , 多維索引,用於group by多維聚合結果等
#    Datetimeindex ,時間類型索引,強大的日期和時間的方法支持

好好學習,天天向上


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM