python 型別轉換和冗餘資料刪除

2021-09-24 20:03:39 字數 4832 閱讀 2870

1.型別轉換

import pandas as pd

import datetime

法1:

dt =

'2019/06/13 16:16:39'

d ='2017-04-24'

str2datetime = datetime.datetime.strptime(dt,

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

)str2date1 = datetime.datetime.strptime(d,

'%y-%m-%d'

)str2date2 = datetime.datetime.strptime(d,

'%y-%m-%d'

).date(

)print

(str2datetime)

print

(str2date1)

print

(str2date2)

2019-06-13 16:16:39

2017-04-24 00:00:00

2017-04-24

法2:

# 字串轉換為時間格式

dt = pd.dataframe(

['2019/06/13 16:16:39'

,'2019-03-02 23:12:23'

,'2019-03-22 13:12:23'

,'2019-05-02 15:12:30'

,'2019-04-02 17:33:23'

,'20/05/02'])

print

(dt)

0

0 2019/06/13 16:16:39

1 2019-03-02 23:12:23

2 2019-03-22 13:12:23

3 2019-05-02 15:12:30

4 2019-04-02 17:33:23

5 20/05/02

dt.iloc[:,

0]= pd.to_datetime(dt.iloc[:,

0],format

='%y-%m-%d'

,errors =

'coerce'

)# 將其他格式顯示成nat

print

(dt)

0

0 2019-06-13 16:16:39

1 2019-03-02 23:12:23

2 2019-03-22 13:12:23

3 2019-05-02 15:12:30

4 2019-04-02 17:33:23

5 nat

salesdf=dt.dropna(how=

'any'

)print

(salesdf)

0

0 2019-06-13 16:16:39

1 2019-03-02 23:12:23

2 2019-03-22 13:12:23

3 2019-05-02 15:12:30

4 2019-04-02 17:33:23

1.刪除缺失值

dropna() 預設刪除含有缺失值的行,引數how = 'all』指刪除全部為空值的行

data3 = pd.read_excel(io=r'd:\bd\data3.xlsx'

)

data3.dtypes
id              int64

gender object

age float64

edu object

custom_amt object

order_date object

dtype: object

data3.head(

)

idgender

ageedu

custom_amt

order_date

0890

female

43.0

nan¥2177.94

2023年12月25日

12391

male

52.0

nan¥2442.18

2023年5月24日

22785

male

39.0

nan¥849.79

2023年5月15日

31361

female

26.0

nan¥2482.22

2023年5月16日

4888

female

61.0

本科¥2027.9

2023年1月21日

上述資料中使用者id應為字元型,消費金額應為數值型,訂單日期應為日期型

# 使用者id轉換為字元型

data3[

'id'

]= data3[

'id'

].astype(

str)

# 使用者消費金額轉換為數值型 ,消費金額中包含人民幣符號'¥',所以要從第二個元素開始截斷

data3[

'custom_amt'

]= data3[

'custom_amt'].

str[1:

].astype(

float

)# 訂單日期轉換為日期型

data3[

'order_date'

]= pd.to_datetime(data3[

'order_date'],

format

='%y年%m月%d日'

)

2.刪除重複資料

data3.duplicated().any()

判斷資料中是否存在重複觀測,如果不加any(),則會返回乙個與原資料行數相同的序列,使用了any()方法,則只返回乙個值(true或false)

duplicated方法和drop_duplicates方法 都有乙個重要的引數,預設情況下不設定該引數時,表示對資料的所有列進行重複性判斷,如果需要按照指定的變數做資料的重複性判斷時,就可以使用該引數指定具體的變數列表。

# 構造資料

df = pd.dataframe(

dict

(name =

['張三'

,'李四'

,'王二'

,'張三'

,'趙五'

,'丁一'

,'王二'],

gender =

['男'

,'男'

,'女'

,'男'

,'女'

,'女'

,'男'],

age =[29

,25,27

,29,21

,22,27

],income =

[15600

,14000

,18500

,15600

,10500

,18000

,13000],

edu =

['本科'

,'本科'

,'碩士'

,'本科'

,'大專'

,'本科'

,'碩士'])

)df

name

gender

ageincome

edu0張三男

2915600本科1

李四男2514000本科2

王二女2718500碩士3

張三男2915600本科4

趙五女2110500大專5

丁一女2218000本科6

王二男2713000

碩士

# 預設情況下,對每行所有變數進行判斷,刪除第二條重複行,刪除第二行的張三

df.drop_duplicates(

)

name

gender

ageincome

edu0張三男

2915600本科1

李四男2514000本科2

王二女2718500碩士4

趙五女2110500大專5

丁一女2218000本科6

王二男2713000

碩士

# 根據使用者姓名和年齡來刪除重複值

df.drop_duplicates(subset =

['name'

,'age'

])

name

gender

ageincome

edu0張三男

2915600本科1

李四男2514000本科2

王二女2718500碩士4

趙五女2110500大專5

丁一女2218000本科

使用drop_duplicates方法刪除重複資料,並不能直接影響到原始資料,即原始資料中還是存在重複觀測的,若使用inplace = true,則會用刪除後的資料替換原始資料

mysql資料冗餘 MySQL冗餘資料的三種方案

一,為什麼要冗餘資料 網際網路資料量很大的業務場景,往往資料庫需要進行水平切分來降低單庫資料量。水平切分會有乙個patition key,通過patition key的查詢能夠直接定位到庫,但是非patition key上的查詢可能就需要掃瞄多個庫了。此時常見的架構設計方案,是使用資料冗餘這種反正規...

python處理txt去掉同類的冗餘資料

在天池資料競賽中需要對其提供的資料進行處理。現在有這樣一些資料,例如 1 78687679,7879877 79879 2 98797 7980787,87987907 3 9809789,987987,8798789 89798798,9878907 4 987686 9870987987 879...

HDFS 冗餘資料塊的自動刪除

在日常維護hadoop集群的過程中發現這樣一種情況 某個節點由於網路故障或者datanode程序死亡,被namenode判定為死亡,hdfs馬上自動開始資料塊的容錯拷貝 當該節點重新新增到集群中時,由於該節點上的資料其實並沒有損壞,所以造成了hdfs上某些block的備份數超過了設定的備份數。通過觀...