您當前的位置:首頁 > 書法

DataFrame踩坑整理(一)

作者:由 Nevanancy 發表于 書法時間:2020-04-14

不得不說,工作中幾乎天天跟DataFrame打交道,真的很有總結和記住的必要,話不多說,直接上乾貨。輸入以下語句前別忘記:

import pandas as pd

import numpy as np

1、讀入檔案:

df=pd。read_csv(path,names=[‘’,’’,’’]);

#讀入檔案用names,格式轉換用columns;

2、list轉dataframe :

df=pd。DataFrame(data,column=[‘a’, ’b’]) ;

Dataframe 轉list :

df。values。tolist();

某一列資料轉list :

list(df[‘a’]);

3、兩個dataframe 取交集,也可用於刪除重複專案

pd。merge(df1,df2);

#很好用,速度快。

4、兩個dataframe取並集(合併):

pd。concat([df1,df2])

#括號裡面一定要寫中括號。

#兩個表合併之後一定要

reset_index

,否則索引值不是按順序的。

5、DataFrame資料形式轉換 :

Df=pd。DataFrame(df,type=np。float);

6、刪除空值 :

df。dropna(axis=0,how=’any’,inplace=True);

#how的取值是any或者all。

7、填補缺失值 :

df。fillna(0,inplace=True) ;

#不要忘了inplace=True,否則不會在原表上修改;

8、計算缺失值個數:

list(data[‘a’]。isnull())。count(True);

9、資料替換 :

df[‘a’]=df[‘a’]。replace(‘。’ , ’0’);

10、根據一列資料生成另一列資料(例如歸一化):

dt=df。apply(lambda x:(x-np。min(x))/(np。max(x)-np。min(x)));

#apply+lamda這個語句還是好用的,例如給不同分值的人分等級,可以先做一個字典,直接對映到字典裡面的值。

DataFrame踩坑整理(一)

11、篩選資料 :

df[df[‘a’]!=1][‘a’,’b’,’c’];

#選擇a這一列中不為1的資料;

12、資料篩選(按列) :

df。iloc[:, df。columns!=’flag’];

13、資料篩選(按值):

A_list=[0。1,0,2,0。3];

df[‘a’]。isin(alist);

14、取第一行:

df。iloc

[[1]] ;

#一定要寫兩個中括號;

15、元素定位 :

df。loc[0:3,[‘a’,’b’]] #loc需要寫列名;

df。iloc[0:3,[0,1]];

16、刪除某一列 :

del df[‘a’];

17、刪除多列 :

df=df。drop

([‘a’,’b’],axis=1);

18、抽樣 :

df[features]。sample(n=1000);

#但感覺這個不太好用,可以用np。random。choice;

19、展示重複值 :

df[df。duplicated(keep=’first’)];

#不加列名就是展示所有列;

20、刪除重複值 :

df。drop_duplicates(keep=’first’,inplace=True);

#這一步做完也一定要reset_index;

21、資料排序 :

df。sort_values

(‘a’,ascending=True,inplace=true);

22、插入新的一列 :

df[‘d’]=None;

#然後再用apply+lambda賦值;

23、某一列值分類計數 :

df[‘a’]。value_counts() ;

#要畫圖的話直接在後面加。plot(kind=’bar’);

24、求分位數 :

df[‘a’]。quantile(0。25);

25、資料儲存成csv檔案 :

df。to_csv(‘a。csv’,header=False,index=False);

#如果不寫後面兩個False,就會自動生成一列索引和一個表頭;

(未完待續。。。)

本文首發於:

更多內容,歡迎關注個人公眾號

標簽: df  一列  list  true  Pd