實用Pandas操作記錄

2021-10-03 20:18:58 字數 2962 閱讀 5918

from lxml import etree

//檔案路徑

f='e:\web crawler/https免費http**ip__第1頁https.html'

//生成html頁面的字串

html_table_text=etree.

tostring

(etree.

parse

(f,etree.

htmlparser()

)).decode

('utf-8'

)

df=pd.

read_html

(html_table_text,attrs=)[

0]

df[df.columns[6]

]=etree.

html

(html_table_text)

.xpath

('//tr/td[last()-3]/div/@title'

)

df.

drop

(df.columns[[0

,6,7

]],axis=

1,inplace=true)

使用pd.to_datetime轉換字串為時間時,給上時間格式會使**執行更快!

df[df.columns[8]

]=pd.

to_datetime

(df[df.columns[8]

].str.

replace

('20-'

,'2020-'

),format=

'%y/%m/%d %h:%m'

)

for x in

range(2

):df[df.columns[x+5]

]=df[df.columns[x+5]

].str.

extract

('(\d+\.?\d*)'

,expand=false)

.astype

(float)

注意:

df.iloc[[5,6]].str.extract(』(\d+.?\d*)』,expand=false).astype(float)是不行的,df.iloc[[5,6]]選出的是dataframe,而.str是series(也就是一列)才有的方法。

str.extract()方法裡面,正則至少要有一對小括號,expand=false是盡量不轉為dataframe,預設是true。

就靠df.str.contains函式來分辨了,是天的*24轉為小時,是分鐘的/60轉為小時。

最後把原來字串的時間列丟掉。不知有沒有更好的辦法。

df[

'life_time'

]=df[df.columns[7]

].str.

extract

('(\d+)'

,expand=false)

.astype

(float)

df.loc[df[

'存活時間'

].str.

contains

('天'),

'life_time'

]=df[

'life_time']*

24df.loc[df[

'存活時間'

].str.

contains

('分鐘'),

'life_time'

]=df[

'life_time']/

60df.

drop

(df.columns[7]

, axis=

1, inplace=true)

pd.cut、np函式還有用於區分數值區間以應用不同算術的方法,在cpython執行,執行速度更快!之後補充參考鏈結!

import pandas as pd

df.values.

tolist

()

df資料清洗

通過正則拆開成一列裡面變成每行都是乙個陣列,map轉成集合,來跟目標集合進行乙個比較

import pandas as pd

df = pd.read_excel(

'e:\pyprojts\python_prefereneces\工作簿1.xlsx'

, sheet_name=

'sheet1'

)df = df.iloc[:5

,:]ks =

set(

'pla filament'

.split(

' ')

)# 方法一—:(輔助列)

# df['temp'] = df['資料列'].str.split('[\s,]+').map(set)

# df2 = df.loc[lambda x: ks <= df['temp'], ['資料列']]

# 方法二:(lambda x: x直接構建)

resdf = df.loc[

lambda x:ks <= x[

'資料列'].

str.split(

'[\s,,]+').

map(

set)

,'資料列'

]print

(df2)

執行結果:

資料列0 pla filament 3d filament

1 pla 3d filament

23d filament pla

33d printing filament, pla plastic

process finished with exit code 0

vi vim實用操作記錄

1.視窗相關操作 vi o file1 file2 以橫屏分隔視窗開啟file1,file2,vi o file1 file2 以豎屏分隔視窗開啟file1,file2,ctrl w s橫屏分隔乙個視窗中開啟當前檔案 window split ctrl w v豎屏分隔乙個視窗中開啟當前檔案 wind...

pandas實用函式

一 統計彙總函式 import pandas as pd s pd.series s.min s.max s.sum s.mean s.count 非缺失元素的個數 s.size 所有元素的個數 s.median s.var s.std s.quantile 計算任意分位數 s.cov 計算協方差 ...

pandas實用操作彙總(不斷更新)

按字串包含字元篩選 按列獲取資料 讀取 csv時選擇不同的列屬性方式 時間格式 to datetime 記錄下寫程式過程中用到的覺得實用的pandas操作,不斷更新下,方便自己查詢 df 條件1 條件2 import pandas as pd import numpy as np a np.rand...