Python数据分析—Pandas数据规整
生活随笔
收集整理的這篇文章主要介紹了
Python数据分析—Pandas数据规整
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數據規整
- 一、索引
- 二、分層索引
- 三、數據合并
- 1、merge方法
- 2、join方法
- 3、concat方法
- 四、數據分組與聚合
一、索引
# 查看索引 df.index # 指定索引,但個數必須保持一致 df.index=[] # 重置索引,個數無需一致,重置索引不同則用NAN填充,相當于映射的關系 df.reindex([]) # 指定某一列作為行索引 df.set_index("列名") # 指定多列為行索引 df.set_index(["",""]) # 取索引的唯一值 df.index.unique()二、分層索引
# 創建一個數組 df = pd.DataFrame({'a':range(7),'b':range(7,0,-1),'c':['one','one','one','two','two','two','two'],'d':list("hjklmno") }) # 設置c、d兩列為行索引 df1 = df.set_index(["c","d"]) # 寫入表格 df1.to_excel("test.xlsx") # 讀取表格不設置索引列時,合并單元不會出現,而是被NAN填充 pd.read_excel("test.xlsx",index_col=[0,1])分層索引取值時,切片只能用于索引有序的情況,可用神奇索引
# 取one df1.loc["one",:] # 取one two df1.loc["one":"two"] df1.loc[["one","two"]] # 取one塊的k行 df1.loc["one","k"] df1.loc["one",:].loc["k"] # 取one塊k行的2這個值 df1.loc["one"].loc["k","a"]交換索引層級
df.swaplevel()索引排序
外層索引層級:0 內存索引層級:1
重置索引,將為默認索引
df.reset_index()三、數據合并
1、merge方法
pd.merge(left, right, how='inner', on=None,left_on=None, right_on=None,left_index=False, right_index=False)left:拼接左側的DataFrame對象
right:拼接右側的DataFrame對象
on:待關聯的同名列名,存在于左右兩個DataFrame對象中
how:連接方式,inner(默認),其他可選:outer、left、right
left_on:左表中用作連接鍵的列名
right_on:右表中用作連接鍵的列名
left_index:將左側的行索引用作其連接鍵
right_index:將右側的行索引用作其連接鍵
注:當how='right’時,以右表為主,左表中缺失的數據以NAN填充;how='left’同理;當how='inner’時,左右表數據取交集;how='outer’時,左右表數據取并集。
當數據集存在重復鍵,會出現笛卡爾積連接,為避免這種情況可指定多列作拼接條件,即設置 on=[" “,” " ]
2、join方法
df1.join(df2,how="left")3、concat方法
pd.concat(objs, axis=0, join='outer', keys=None)objs:要拼接的數據集,通常以列表的形式傳入
axis:默認為0軸拼接
keys:定義新的分組索引
四、數據分組與聚合
# 例 求某列分組后的均值 df.groupby(by="").mean() # 也可求多列 df.groupby(by=["",""]).mean()自定義聚合函數(分組后通過agg或aggregate聚合)
# 例 求極差 def jicha(x):return x.max()-x.min() df.groupby(by="").agg(jicha)分組塊上應用函數(通過apply方法將函數應用到分組后的數組)
def sort_df(df):return df.sort_values(by="grades")df1.groupby(by="").apply(sort_df)總結
以上是生活随笔為你收集整理的Python数据分析—Pandas数据规整的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【源码】紫色UI趣味测试小程序源码各种测
- 下一篇: PTA 盲盒包装流水线 (25 分)