python填坑小技巧 持續更新

2021-08-31 07:47:34 字數 3403 閱讀 1820

txt與csv檔案讀取為dataframe

利用pandas 裡的read_table

1、讀取txt,且重新命名表頭

import pandas as pd

df = pd.read_table('.../data.txt',names=['a','b','c'],header=none,encoding='utf-8').astype(str)

2、讀取csv,且重新命名表頭,跳過第一行(原表頭)

datacol = ['a','b','c']

train = pd.read_csv('data.csv',sep = ',', header=none, names = datacol, na_values='?',skiprows=1)

3、查詢檔案編碼格式

data = pd.read_csv('data.csv')

data.dtypes

4、檔案匯出為csv

4_1不識別中文

data.to_csv('e:\\data\\data.csv', encoding='utf-8', index=false)
4_2識別中文

data.to_csv('e:\\data\\data.csv', encoding='utf_8_sig', index=false)
5、構造新列

data.eval('c = a*10000/b',inplace = true)
6、dataframe資料抽取

##橫向特定值,縱向特定列,reset_index為重排序列號

data1 = data[data['a']==11][['b','c','d']].reset_index(drop=true)

抽取包含特定值的行

df2002 = df1[df1['year'].str.contains('2002')]
按資料型別抽取特定列

df1 = df.select_dtypes(include='object')   # 篩選object型變數

df2 = df.select_dtypes(include='category') # 篩選因子型變數

特定序列行分割

data1 = data[:50000] 

data2 =data[50000:100000]

data3 = data[100000:]

7、dataframe列表拼接

##axis=0 則為行後拼接,axis=1 則為列後拼接,按括號裡從左到右為先後順序

data = pd.concat([data1,data2,data3],axis=1)

8、dataframe列名更改

8_1全部重新命名

data.columns = ['a','b','c','d','e']
8_2定向重新命名

data.rename(columns=, inplace = true)
8_3列名批量加編碼

#原列名(a,b,c,d,e)

data.rename(columns=lambda x:str(x)+'1', inplace=true)

#新列名(a1,b1,c1,d1,e1)

8_4獲取行列名

df._stat_axis.values.tolist() # 行名稱

df.columns.values.tolist() #列名稱

9、刪除特定列

原變數不刪除列,新變數刪除列

data1 = data.drop(['a','b'],axis=1)

原變數刪除列

data1 = data.drop(['a','b'],axis=1,inplace = true)

10、object型別轉換

object轉換為str字串

df1['year'] = df1['time'].astype(str)
特定列object轉換為數字

df.iloc[:,[5,15,17]] = df.iloc[:,[5,15,17]].convert_objects(convert_numeric=true)
將列轉換為日期格式

import pandas as pd

datafile.report_date = pd.to_datetime(datafile.report_date,format='%y%m%d')

11、描述性統計函式

df.describe()
12、行/列計數 及統計缺失值

df.count() #按照列來數非缺失值的個數

df.count(axis=1) #按照行來數非缺失值的個數

df.shape[0] - df.count() #每列缺失值個數

13、dataframe列字串特定字元替換

df["province"] = df["province"].str.replace('市', '')  #將provinc列中所有的」市「字替換為空
13、matplotlib畫圖

增加水平參考線

plt.axhline(2,color="red")
增加垂直參考線

plt.axvline(2,color="red")
14、進製轉換

#############  十進位制轉其他進製  ############

#十進位制轉二進位制

bin(10)

>>>'0b1010'

#十進位制轉八進位制

oct(10)

>>>'0o12'

#十進位制轉十六進製制

hex(10)

>>>'0xa'

############# 其他進製轉十進位制 ############

#二進位制轉十進位制

x = "1111"

int(x,2)

>>>15

#八進位制轉十進位制

x = "37"

int(x,8)

>>>31

#十六進製制轉十進位制

x = "4a"

int(x,16)

>>>74

Linux小技巧(持續更新)

1.最近在遠端伺服器的時候,輸入命令一些報錯資訊老是亂碼。解決辦法 因為服務的命令列預設是不支援英文的,我們需要修改語言才能正確選擇。輸入 echo lang 結果 zh cn.utf 8 修改語言為英語 lang en us 這樣這次登入資訊就是英文了,如果下次在登入,語言還是會顯示中文的。2.有...

css小技巧 (持續更新)

這兩天做專案 遇到的一些css問題記錄一下 以前的解決辦法都是用calc 100 padding或者margin 的數值 但是css3出了個新屬性 box sizing border box margin不在屬性範圍內 意思為 元素指定的任何內邊距和邊框都將在已設定的寬度和高度內進行繪製。通過從已設...

div css小技巧 持續更新中

最近的學習中積累了一些關 於div css的小技巧,感覺雖然不是很難,但是如果不知道的話,確實需要很長時間去查。1div中文字垂直居中 網上有很多種,剛哥提醒我使用label,最後使用的是div巢狀table。感覺還是在table中容易實現對字型的操控 開課學院 2首行縮排2個字的距離 課程 效果圖...