python 數據分析、數據處理之超實用的pandas 實現表關聯連接、新增添加一行記錄、空值判斷等

我在博客上分享的都是在實際項目中遇到的棘手的並且解決的問題,整理出來當作知識總結,希望也能幫助到需要的人。


一、dataframe 的merge方法實現千萬條數據的關聯

這裏的temp1是特徵數據,有幾千萬條,temp2是樣本標籤,有幾萬條,現在需要拿出有標籤的幾萬條樣本的數據,做後續分析。
之前自己寫循環做關聯操作,每次循環到150萬次左右程序就killed了,內存不足,算不出來。
嘗試了好多方法,發現dataframe的merge方法簡直不能更好用,只需一行代碼就能實現,計算速度也是極快的。merge裏面穿四個參數,分別是兩張表的名稱、關聯字段的名稱、和連接方式(left或right)。

temp1 = pd.read_csv('/Users/taorui02/Documents/test_data.txt')
temp2 = pd.read_csv('/Users/taorui02/Documents/test_sample.txt')
merge_data1 = pd.merge(temp2, temp1, on='id', how='left')
merge_data1.to_csv("test.csv", index=False, sep=',')

二、dataframe新增一行數據

dataframe用來做數據處理是十分方便的,可是要增加一行數據的方法我折騰了會兒才解決,因爲它不同於修改、賦值。
如果是修改賦值,這樣就可以:

1.先新建一個dataframe表
import pandas as pd
import numpy as np

df2 = pd.DataFrame(np.arange(16).reshape((4, 4)),
                   index=['a', 'b', 'c', 'd'],
                   columns=['one', 'two', 'three', 'four'])

print(df2)

輸出:

   one  two  three  four
a    0    1      2     3
b    4    5      6     7
c    8    9     10    11
d   12   13     14    15
2.修改一列
import pandas as pd
import numpy as np

df2 = pd.DataFrame(np.arange(16).reshape((4, 4)),
                   index=['a', 'b', 'c', 'd'],
                   columns=['one', 'two', 'three', 'four'])
df2['one'] = 99999
print(df2)

輸出:

     one  two  three  four
a  99999    1      2     3
b  99999    5      6     7
c  99999    9     10    11
d  99999   13     14    15
3. 修改特定值
import pandas as pd
import numpy as np

df2 = pd.DataFrame(np.arange(16).reshape((4, 4)),
                   index=['a', 'b', 'c', 'd'],
                   columns=['one', 'two', 'three', 'four'])
df2['one'][0] = 99999
print(df2)

輸出:

     one  two  three  four
a  99999    1      2     3
b      4    5      6     7
c      8    9     10    11
d     12   13     14    15
4. 使用索引賦值的方式不能實現新增一行,新增的話要用.loc[i]=一個list這種方式。
# coding:utf-8
from pandas import *
df = DataFrame(columns=('lib', 'qty1', 'qty2'))  # 生成空的pandas表

df.loc[0] = [1, 3, 4]
print df

輸出:

  lib qty1 qty2
0   1    3    4

三、dataframe裏面的空值判斷

在數據處理的過程中,空值是再常見不過的了。
之前沒有用pandas的時候判斷空值用 if value == '':來判斷,可是到了dataframe裏面這種代碼就失效了,用if value :判斷還是報錯,最後發現pandas裏面有自帶的判斷空值的方法。
當在文本文件中,空值爲null,讀入dataframe中,空值就變成了NaN,使用pd.isnull()或者pd.notnull()對一列進行空值判斷,即if pd.notnull(value)來判斷。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章