大數據一般是在“云”上玩的,但“云”都是要錢的,而且數據上上下下的也比較麻煩。所以,在本地電腦上快速處理數據的技能還是要的。
pandas
在比賽中學到的一個工具,本地可以在億級別的數據上進行聚合等操作。內部的數據包括:
• Series:一維數組,每個元素有一個標簽 
• DataFrame:二維表格,可以看做Series的集合 
• Panel:三維數據
數據的初始化
我們可以通過構造函數來初始化,從下面的代碼中可以想象得到數據是樣子:
from pandas import Series, DataFrames = Series(data=[1, 2, 3], index=['a', 'b', 'c'])df = DataFrame( data=[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ], index=['i1', 'i2', 'i3'], columns=['c1', 'c2', 'c3'])
如果源數據是格式比較好的CSV(或者是自己加工生成的中間數據),可以直接讀?。?
df = pandas.read_csv("../volume.csv", header=0)
數據的更新
更新結構
在定義完成之后可以對行、列進行增減(增減數據、修改結構): 
• 增加列: • df.insert(3, 'new_column', [4, 7, 10]) 
• df['c4'] = [4, 7, 10]
• 刪除列 • df.pop('c1') 
• df = df.drop('c1', axis=1)
• 增加行:一般不要動態的增加行,據說新能不高 • df.loc['i4'] = [10, 11, 12] 
• df.loc['i4'] = {'c1': 10, 'c2': 11, 'c3': 12}
• 刪除行: • df = df.drop('i1', axis=0)
更新數據
我們可以精確修改單個位置的值:
• df['c1']['i1'] = 77 
• df.ix[1, 2] = 66
合并數據
數據很多時候分布在不同的DataFrame中,要使用需要將他們進行合并,第一種方式是concat(基礎方法): 
import pandas as pddf1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],          'B': ['B0', 'B1', 'B2', 'B3'],          'C': ['C0', 'C1', 'C2', 'C3'],          'D': ['D0', 'D1', 'D2', 'D3']},          index=[0, 1, 2, 3])df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],          'B': ['B4', 'B5', 'B6', 'B7'],          'C': ['C4', 'C5', 'C6', 'C7'],          'D': ['D4', 'D5', 'D6', 'D7']},          index=[4, 5, 6, 7])result = pd.concat([df1, df2])合并完的結果為:
A B C D0 A0 B0 C0 D01 A1 B1 C1 D12 A2 B2 C2 D23 A3 B3 C3 D34 A4 B4 C4 D45 A5 B5 C5 D56 A6 B6 C6 D67 A7 B7 C7 D7
其參數含義如下:
• objs :合并的數據(Series、DataFrame) 
• axis :合并軸方向,行(0)、列(1) 
• join :關聯類型(inner、outer) 
• join_axes :結果行,eg: pd.concat([df1, df2], axis=1, join_axes=[pd.Int64Index([1, 2, 3])]) 
• ignore_index :是否忽略objs中傳入的索引 
• keys :來自不同表的index,每個表一個(ignore_index=True時不管用)             
新聞熱點
疑難解答