使用NumPy和pandas的Python Text Matrix

时间:2014-05-31 15:47:56

标签: python csv numpy matrix pandas

我一直在进行文本抓取,只是使用循环将文本写入CSV文件。例如(跳过大量代码 - 这只是为了说明):

for i in range(0,numresults):
    a2 = soup.find_all('td')[0].string
    a3 = soup.find_all('td')[1].string
    file.write(str(i) + '|' + a2 + '|' + a3 + '\n')

然后我可以用R。

之类的东西打开这个CSV文件

但是,我想说我想在python中创建一个矩阵。首先,当使用包含大量文本的数据时,最好使用pandas或NumPy吗?

其次,我如何修改代码以不写入文件,而是创建pandas和NumPy数组?

让我们说文本最终是:

a11 = 1; a12 = 'a'; a13 = 'Text1'
a21 = 2; a22 = 'B'; a23 = 'Text2'
a31 = 3; a32 = 'c'; a33 = 'Text3'
a41 = 4; a42 = 'D'; a44 = 'Text4'

import numpy as np
import pandas

最后,我如何将生成的pandas和NumPy矩阵写入CSV文件?

1 个答案:

答案 0 :(得分:1)

您似乎正在使用BeautifulSoup从HTML获取表格。我已成功使用Pandas从网页中提取表格。使用pandas doc中的示例(这里是link):

In [1]: import pandas as pd

In [2]: tables = pd.read_html('http://www.fdic.gov/bank/individual/failed/banklist.html')

在这种情况下,tables只有一个表。您可以print tables[0]查看或tables[0].to_csv(local_csv_output)保存为CSV文件。 pd.read_html可以读取URL(http ...)和本地HTML文件。

如果你有多个表,只需通过打印手动找出你需要的表。

尝试一下,让我们知道。

如果您已经分配了变量a11,a11,...(这看起来很奇怪 - 它们应该在list中),那么您可以创建pandas DataFrame:

    In [38]: df = pd.DataFrame ([[a11,a12,a13],
[a21,a22,a23],
[a31,a32,a33],
[a41,a42,a44]],
columns=['Col1','Col2','Col3'])

In [39]: df
Out[39]: 
   Col1 Col2   Col3
0     1    a  Text1
1     2    B  Text2
2     3    c  Text3
3     4    D  Text4

df.to_csv('output_csv_file.csv')会将其保存到csv。