日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

pandas常用

發布時間:2025/3/14 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pandas常用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

#python中的pandas庫主要有DataFrame和Series類(面向對象的的語言更愿意叫類) DataFrame也就是
#數據框(主要是借鑒R里面的data.frame),Series也就是序列 ,pandas底層是c寫的 性能很棒,有大神
#做過測試 處理億級別的數據沒問題,起性能可以跟同等配置的sas媲美
#DataFrame索引 df.loc是標簽選取操作,df.iloc是位置切片操作
print(df[['row_names','Rape']])
df['行標簽']
df.loc[行標簽,列標簽]
print(df.loc[0:2,['Rape','Murder']])
df.iloc[行位置,列位置]
df.iloc[1,1]#選取第二行,第二列的值,返回的為單個值
df.iloc[0,2],:]#選取第一行及第三行的數據
df.iloc[0:2,:]#選取第一行到第三行(不包含)的數據
df.iloc[:,1]#選取所有記錄的第一列的值,返回的為一個Series
df.iloc[1,:]#選取第一行數據,返回的為一個Series
print(df.ix[1,1]) # 更廣義的切片方式是使用.ix,它自動根據你給到的索引類型判斷是使用位置還是標簽進行切片
print(df.ix[0:2])


#DataFrame根據條件選取子集 類似于sas里面if、where ,R里面的subset之類的函數
df[df.Murder>13]
df[(df.Murder>10)&(df.Rape>30)]
df[df.sex==u'男']
#重命名 相當于sas里面的rename R軟件中reshape包的中的rename
df.rename(columns={'A':'A_rename'})
df.rename(index={1:'other'})

#刪除列 相當于sas中的drop R軟件中的test['col']<-null
df.drop(['a','b'],axis=1) or del df[['a','b']]

#排序 相當于sas里面的sort R軟件里面的df[order(x),]
df.sort(columns='C') #行排序 y軸上
df.sort(axis=1) #各個列之間位置排序 x軸上

#數據描述 相當于sas中proc menas R軟件里面的summary
df.describe()


#生成新的一列 跟R里面有點類似
df['new_columns']=df['columns']
df.insert(1,'new_columns',df['B']) #效率最高
df.join(Series(df['columns'],name='new_columns'))


#列上面的追加 相當于sas中的append R里面cbind()
df.append(df1,ignore_index=True)
pd.concat([df,df1],ignore_index=True)

#最經典的join 跟sas和R里面的merge類似 跟sql里面的各種join對照
merge()

#刪除重行 跟sas里面nodukey R里面的which(!duplicated(df[])類似
df.drop_duplicated()

#獲取最大值 最小值的位置 有點類似矩陣里面的方法
df.idxmin(axis=0 ) df.idxmax(axis=1) 0和1有什么不同 自己摸索去

#讀取外部數據跟sas的proc import R里面的read.csv等類似
read_excel() read_csv() read_hdf5() 等

與之相反的是df.to_excel() df.to_ecv()

#缺失值處理 個人覺得pandas中缺失值處理比sas和R方便多了
df.fillna(9999) #用9999填充

#鏈接數據庫 不多說 pandas里面主要用 MySQLdb
import MySQLdb
conn=MySQLdb.connect(host="localhost",user="root",passwd="",db="mysql",use_unicode=True,charset="utf8")
read_sql() #很經典
#寫數據進數據庫
df.to_sql('hbase_visit',con, flavor="mysql", if_exists='replace', index=False)

#groupby 跟sas里面的中的by R軟件中dplyr包中的group_by sql里面的group by功能是一樣的 這里不多說

#求啞變量
dumiper=pd.get_dummies(df['key'])
df['key'].join(dumpier)

#透視表 和交叉表 跟sas里面的proc freq步類似 R里面的aggrate和cast函數類似
pd.pivot_table()
pd.crosstab()

#聚合函數經常跟group by一起組合用
df.groupby('sex').agg({'height':['mean','sum'],'weight':['count','min']})


#數據查詢過濾
test.query("0.2
將STK_ID中的值過濾出來
stk_list = ['600809','600141','600329']中的全部記錄過濾出來,命令是:rpt[rpt['STK_ID'].isin(stk_list)].
將dataframe中,某列進行清洗的命令
刪除換行符:misc['product_desc'] = misc['product_desc'].str.replace('\n', '')
刪除字符串前后空格:df["Make"] = df["Make"].map(str.strip)


如果用模糊匹配的話,命令是:
rpt[rpt['STK_ID'].str.contains(r'^600[0-9]{3}$')]


對dataframe中元素,進行類型轉換

df['2nd'] = df['2nd'].str.replace(',','').astype(int) df['CTR'] = df['CTR'].str.replace('%','').astype(np.float64)
#時間變換 主要依賴于datemie 和time兩個包
http://www.2cto.com/kf/201401/276088.html

#其他的一些技巧
df2[df2['A'].map(lambda x:x.startswith('61'))] #篩選出以61開頭的數據
df2["Author"].str.replace("<.+>", "").head() #replace("<.+>", "")表示將字符串中以”<”開頭;以”>”結束的任意子串替換為空字符串

commits = df2["Name"].head(15)
print commits.unique(), len(commits.unique()) #獲的NAME的不同個數,類似于sql里面count(distinct name)


#pandas中最核心 最經典的函數apply map applymap

#這三個函數是pandas里面數據變換的核心 避免了for循環,跟R里面的apply函數類似
#主要用法不清楚可以問我

pd.concat([df1,df2],axis=1) 橫向合并 ,沒有axis=1 則縱向合并

轉載于:https://www.cnblogs.com/onemorepoint/p/8135881.html

總結

以上是生活随笔為你收集整理的pandas常用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。