0、讀寫數據
(1)讀取txt文件
#讀取txt並拼接data
import pandas as pd
data=pd.read_table('1.txt', delimiter=',',dtype={'id':'int32','index':'int8'})
all=data.merge(data2,on='id',how='left').merge(data3,on=['id','index'],how='left')
(2)讀取和保存list文件
注意:list若存儲在txt中,需轉化爲str,讀取時也是str。爲了防止破壞list結構,可以轉化爲np.array存儲
#存
import numpy as np
a=np.array(test_courier_ids)
np.save('test_courier_ids.npy',a)
#讀取
a=np.load('test_courier_ids.npy')
test_courier_ids=a.tolist()
(3) 保存dataframe到csv
#dataframe保存爲csv文件
data.to_csv(path_or_buf="data.csv", index=False)
1、排序
DataFrame.sort_values(by=‘##’,axis=0,ascending=True, inplace=False, na_position=‘last’)
參數 說明
by 指定列名(axis=0或’index’)或索引值(axis=1或’columns’)
axis 若axis=0或’index’,則按照指定列中數據大小排序;若axis=1或’columns’,則按照指定索引中數據大小排序,默認axis=0
ascending 是否按指定列的數組升序排列,默認爲True,即升序排列
inplace 是否用排序後的數據集替換原來的數據,默認爲False,即不替換
na_position {‘first’,‘last’},設定缺失值的顯示位置
2、對dataframe append新的一列或一行
import pandas as pd
data = pd.DataFrame()
a = {"x":1,"y":2}#一行
data = data.append(a,ignore_index=True)
print(data)
a = [[1,2,3],[4,5,6]]#兩列
data = data.append(a,ignore_index=True)
a = [[7,8,9],[10,11,12]]
data = data.append(a,ignore_index=True)
print(data)
3、對數據拼接組合:merge 和join
注意:join只能用於行數一樣的(根據行索引進行合併)
參考:https://blog.csdn.net/winnertakeall/article/details/86662669
4、分組內排序
df.groupby('B', group_keys=False).apply(lambda x: x.sort_values('C', ascending=False))
[Out] A B C
3 4 a 201003
0 2 a 200801
1 3 b 200902
2 5 b 200704
5、初始化新的一列
這一列全部賦值:
day1_all_train_data['date']='0201'
用lamada判斷條件賦值:lamada(表達式 if 條件 else (表達式 if 條件 else(…………)))
sourcedf['地區']=sourcedf['exam_district'].apply(lambda x:"全國" if x==1 else ("北京" if x==3 else("上海" if x==24 else "其他地區")) )
6、pandas DataFrame中列太多,輸出顯示省略號
解決辦法:設置最多顯示的列數
pd.set_option('display.max_columns',20)
同理,可以設置顯示多少行:
pd.set_option('display.max_rows',10)
7、對某一列進行編碼
硬編碼:1,2,3,4,5....
label = preprocessing.LabelEncoder()
data_raw[x] = label.fit_transform(data_raw[x])
#將feature的值從0(或者1)開始進行連續編碼,比如color進行硬編碼,color的值有三個,分別爲編碼爲1,2,3
colorMap = {elem:index+1 for index,elem in enumerate(set(df["color"]))}
df['color'] = df['color'].map(colorMap)
onehot: 001 010 100
#將某個字段下所有值橫向展開,對於每條數據,其在對應展開的值上的值就是1
data1 = pd.get_dummies(df[["color"]])
#對多個feature 進行onehot:
df[[fea1,fea2..]]
#onehot以後的數據,如果需要原有的數據合併,直接join onehot的數據即可
res = df.join(data1)
8、實現Unix時間戳(Unix timestamp) 和 普通時間轉換
http://tool.chinaz.com/Tools/unixtime.aspx
9、pandas: 根據一列的條件來替換另一列的值
#當條件>0.99時,old的值替換成對應new的值
df['old'] = df['old'].mask(df['條件'] > 0.99, df['new'])
https://blog.csdn.net/mym_74/article/details/102887459
10、強制類型轉換
df[' Min Humidity']=df[' Min Humidity'].astype('float64')
df=df.astype({'Max Humidity':'float64','Max Dew PointF':'float64'})
11、經緯度geohash
https://www.jianshu.com/p/2fd0cf12e5ba
https://blog.csdn.net/wangyaninglm/article/details/78936475#31_python3__geohash_522
12、判斷key是否存在於字典中
d = {'name':{},'age':{},'sex':{}}
#d.keys()是列出字典所有的key
print name in d.keys()
print name not in d.keys()
#結果返回True、False