1.Pandas對數據某一列刪除
1.刪除列
import pandas as pd
df = pd.read_csv(file)
#axis=1就是刪除列
df.drop(['列名1','列名2'], axis=1)
2.刪除記錄,也就是行
import pandas as pd
df = pd.read_csv(file)
#axis=0就是刪除記錄也就是行
df.drop([0,1,3], axis=0)
2.Pandas之修改列名
1.第一種是沒有表頭,想要添加表頭
因為csv文件是沒有表頭的,但是默認會把第一行作為表頭,而實際上可能第一行就是我們的數據,不能夠丟失。
所以要做read_csv函數參數加上header=None,然后再進行保存文件,這樣系統就會加上0,1這樣的表頭了,再次打開,就可以使用rename函數進行表頭的更改了。
import pandas as pd
data2 = pd.read_csv('D:/transpond_data_1.csv')
data2.head()
Out:
0 1
0 mrMzW0lLIA 0
1 mqJrVB2hb6 0
2 m7nJFCgLiK 0
3 mSFZpU8qVB 0
4 mjBQVsjogW 0
上面這個已經是保存后的有表頭的文件了,可以看到就是0,1默認。
df = pd.DataFrame(data2)
df = df.rename(columns={'0':'mid_c','1':'num'})
print(df)
Out:
mid_c num
0 mrMzW0lLIA 0
1 mqJrVB2hb6 0
2 m7nJFCgLiK 0
3 mSFZpU8qVB 0
4 mjBQVsjogW 0
... ... ...
1619147 mdO38FApFD 0
1619148 mNlc2caNpk 0
1619149 mkbybukSaa 0
1619150 mTStAdjFQt 0
1619151 mA3atazmJ6 0
最后再進行保存文件
df = pd.DataFrame(df,columns=['mid_c','num'])
print(df)
df.to_csv('D:\\transpond_data.csv',index=False,encoding='utf-8')
已經改成功了。
2.第二種是有表頭直接進行改表頭
可以直接打開文件,進行rename函數的使用,最后進行保存,省去了沒有表頭,進行系統默認添加表頭這一步。
3.pandas操作csv多個列,生成新的列
import pandas as pd
df = pd.read_csv(file)
df.eval('new1 = 氣溫 + 濕度 + PM2P5' , inplace=True)
#inplace這個參數表示是否在原數據上進行操作
這樣new1這一列就是通過該文件中的其他幾列通過運算得出的新列,直接添加在該文件上。
df.query("age==24")
這樣就可以把列age中等於24的選出來了。
#注意:query后面只支持string形式的值,而‘age’==24返回的是一個bool類型,結果不是true就是false,所以需要進行如上操作"age==24",才可返回正確結果
4.pandas去除文件中的重復項
DataFrame.drop_duplicates(subset=None, keep='first', inplace=False)
- subset : column label or sequence of labels, optional
用來指定特定的列,默認所有列 - keep : {‘first’, ‘last’, False}, default ‘first’
刪除重復項並保留第一次出現的項 - inplace : boolean, default False
是直接在原來數據上修改還是保留一個副本
df.drop_duplicates('B','first',inplace = True)
#表示刪除B列中重復的項,first保留第一次出現的項,在原數據上進行操作。
5.pandas之拼接函數merge()
-
pandas中的merge()函數類似於SQL中join的用法,可以將不同數據集依照某些字段(屬性)進行合並操作,得到一個新的數據集。
-
用法
DataFrame1.merge(DataFrame2, how=‘inner’, on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=(’_x’, ‘_y’))
參數 說明
how 默認為inner,可設為inner/outer/left/right
on 根據某個字段進行連接,必須存在於兩個DateFrame中(若未同時存在,則需要分別使用left_on和right_on來設置)
left_on 左連接,以DataFrame1中用作連接鍵的列
right_on 右連接,以DataFrame2中用作連接鍵的列
left_index 將DataFrame1行索引用作連接鍵
right_index 將DataFrame2行索引用作連接鍵
sort 根據連接鍵對合並后的數據進行排列,默認為True
suffixes 對兩個數據集中出現的重復列,新數據集中加上后綴_x,_y進行區別
- 用例
#利用字典dict創建數據框
dataDf1=pd.DataFrame({'lkey':['foo','bar','baz','foo'],
'value':[1,2,3,4]})
dataDf2=pd.DataFrame({'rkey':['foo','bar','qux','bar'],
'value':[5,6,7,8]})
print(dataDf1)
print(dataDf2)
>>>
lkey value
0 foo 1
1 bar 2
2 baz 3
3 foo 4
rkey value
0 foo 5
1 bar 6
2 qux 7
3 bar 8
#inner鏈接
dataLfDf=dataDf1.merge(dataDf2, left_on='lkey',right_on='rkey')
>>>
lkey value_x rkey value_y
0 foo 1 foo 5
1 foo 4 foo 5
2 bar 2 bar 6
3 bar 2 bar 8
#Right鏈接
dataDf1.merge(dataDf2, left_on='lkey', right_on='rkey',how='right')
>>>
lkey value_x rkey value_y
0 foo 1.0 foo 5
1 foo 4.0 foo 5
2 bar 2.0 bar 6
3 bar 2.0 bar 8
4 NaN NaN qux 7
#Outer鏈接
dataDf1.merge(dataDf2, left_on='lkey', right_on='rkey', how='outer')
>>>
lkey value_x rkey value_y
0 foo 1.0 foo 5.0
1 foo 4.0 foo 5.0
2 bar 2.0 bar 6.0
3 bar 2.0 bar 8.0
4 baz 3.0 NaN NaN
5 NaN NaN qux 7.0