1. 程式人生 > 實用技巧 >python—dataframe用法

python—dataframe用法

#行處理
#df.iloc[1] 行索引號——獲取行
#df.iloc[0,1] 行列索引號——獲取一個元素
#df.iloc[[0,1]] 雙括號預設都是行索引號——獲取n行
#df.iloc[0:2,1:3] 行列索引號——獲取區域元素
#df.loc["A"] 行名稱——獲取行
#df.loc["A","c1"] 行列名稱——獲取一個元素
#df.loc[["A","B"]] 雙括號預設都是行名稱號——獲取n行
#df.loc["A":"B","c1":"c2"] 行列名稱——獲取區域元素
#列處理
#df["c2"] 列名稱——獲取列
#df[["c1","c2"] 列名稱——獲取n列

#修改某一值
#df.iloc[0,1] = 2
#df.loc["A","c1"] =2

#修改某一行資訊 map與apply 當apply中axis=0時表示行
#df.loc["A"]=df.loc["A"].map(lambda x:x*2) -- A行資訊數*2
#df.iloc[1]=df.iloc[1].map(lambda x:x*2) -- 索引號1,行資訊數*2
#df.loc['A'] = df.apply(lambda x: x['B'] + 2 * x['C'], axis=0)

#修改某一列資訊 map與apply 當apply中axis=1時表示列
#df["c1"]=df["c1"].map(lambda x:x*2) -- c1列資訊數*2
#df['c3'] = df.apply(lambda x: x['c1'] + 2 * x['c2'], axis=1)

#map、apply,mapapply比較
#apply對DataFrame的資料進行按行或按列操作,axis=0時表示行,axis=1時表示列,可新增min與max
#apply運用到Series中,執行的是對每個元素的運算
#applymap自動對DataFrame每一個元素進行處理,不能新增統計函式比如min與max
#map 是對 行、列,series 等 進行每個元素的單獨操作,不能新增統計函式比如min與max

#某列值為**顯示此列
#df[df['c1']==9] -- 列c1值為9的行

import numpy as np
import pandas as pd
a=np.random.randint(5,10,size=(5,5))
df = pd.DataFrame(a,index=["A","B","C","D","E"],columns=['c1', 'c2', 'c3', 'c4', 'c5'])
#print(type(df))
print(df)
'''
#iloc 按照索引號切片取資訊左閉右開
df1=df.iloc[0:2,1:3]
print(df1)
#loc 按照行列名稱取資訊
df2=df.loc["A":"B","c2":"c3"]
print(df2)

#列索引
print(df['c2'])

# 返回前n行
print(df.head(2))
# 返回後n行
print(df.tail(2))

# 按照行列名稱取資訊,n個注意用【 】擴起
df3 = df[["c2","c3"]]
print(df3)

#修改某一資料
df.iloc[1,2]="apple"
print(df)



#修改列資料 使用map方法,其中lambda函式中x代表當前的列
#df['c2'] = df['c2'].map(lambda x: x**2)
#print(df)
#修改行資料
df.iloc[1]=df.iloc[1].map(lambda x:x*2)

#修改多列資料 apply方法 c3=c1+2*c2
df['c3'] = df.apply(lambda x: x['c1'] + 2 * x['c2'], axis=1)

#排序
print(df['c2'].sort_values(ascending=False))

#apply使用統計函式
df1=df.apply(lambda x: x.max()-x.min())
#print(df)

#增加列資料
df["c6"]=[1,2,3,4,5]
print(df)

#某列數值等於**顯示此列
print(df[df['c1']==9])
'''