Pandas之csv文件對列行的相關操作


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM