Pandas讀取大文件
要處理的是由探測器讀出的脈沖信號,一組數據為兩列,一列為時間,一列為脈沖能量,數據量在千萬級,為了有一個直接的認識,先使用Pandas讀取一些
import pandas as pddata = pd.read_table('filename.txt', iterator=True)chunk = data.get_chunk(5)
而輸出是這樣的:
Out[4]: 332.977889999979 -0.0164794921875 0 332.97790 -0.022278 1 332.97791 -0.026855 2 332.97792 -0.030518 3 332.97793 -0.045776 4 332.97794 -0.032654
DataFram基本用法
這里,data只是個容器,pandas.io.parsers.TextFileReader。
使用astype可以實現dataframe字段類型轉換
輸出數據中,每組數據會多處一行,因為get_chunk返回的是pandas.core.frame.DataFrame格式, 而data在讀取過程中并沒有指定DataFrame的columns,因此在get_chunk過程中,默認將第一組數據作為columns。因此需要在讀取過程中指定names即DataFrame的columns。
import pandas as pddata = pd.read_table('filename.txt', iterator=True, names=['time', 'energe'])chunk = data.get_chunk(5) data['energe'] = df['energe'].astype('int')
輸出為
Out[6]:
index | time | energe |
---|---|---|
0 | 332.97789 | -0.016479 |
1 | 332.97790 | -0.022278 |
2 | 332.97791 | -0.026855 |
3 | 332.97792 | -0.030518 |
4 | 332.97793 | -0.045776 |
DataFram存儲和索引
這里講一下DataFrame這個格式,與一般二維數據不同(二維列表等),DataFrame既有行索引又有列索引,因此在建立一個DataFrame數據是
DataFrame(data, columns=[‘year', ‘month', ‘day'], index=[‘one', ‘two', ‘three'])
year | month | day | |
---|---|---|---|
0 | 2010 | 4 | 1 |
1 | 2011 | 5 | 2 |
2 | 2012 | 6 | 3 |
3 | 2013 | 7 | 5 |
4 | 2014 | 8 | 9 |
而pd.read_table中的names就是指定DataFrame的columns,而index自動設置。 而DataFrame的索引格式有很多