pandas 的读写函数简表
读取函数 | 写入函数 | 解释 |
read_clipboard | to_clipboard | 从剪贴板中读取文本并传递给read_table |
read_csv | to_csv | 将CSV(逗号分隔)文件读入DataFrame |
read_excel | to_excel | Excel表格 |
read_sql | to_sql | |
read_pickle | to_pickle | |
read_json | to_json | |
read_msgpack | to_msgpack | |
read_stata | to_stata | |
read_gbq | to_gbq | 从Google BigQuery加载数据 |
read_hdf | to_hdf | |
read_html | to_html | |
read_parquet | to_parquet | |
read_feather | to_feather |
1、多年以来,人们已习惯于文本文件的读写,特别是列表形式的数据。如果文件每一行的多 个元素是用逗号隔开的,
则这种格式叫作CSV,这可能是最广为人知和最受欢迎的格式。
2、其他由空格或制表符分隔的列表数据通常存储在各种类型的文本文件中(扩展名一般 为.txt )。
3、因此这种文件类型是最常见的数据源,它易于转录和解释。pandas的下列函数专门用来处理 这种文件类型:read_csv、read_table、to_csv。
常用数据的读取
1 import pandas as pd
2
3 csvframe = pd.read_csv('pandas_data_test\myCSV_01.csv')
4 print(csvframe, "\n-----*-----")
5 csvframe1 = pd.read_table('pandas_data_test\myCSV_01.csv',sep=',')
6 print(csvframe1, "\n-----*-----")
7 csvframe2 = pd.read_csv('pandas_data_test\myCSV_02.csv',header=None) # 设置header为无,就不会用数据充当表头,此时添加默认表头
8 print(csvframe2, "\n-----*-----")
9 csvframe20 = pd.read_csv('pandas_data_test\myCSV_02.csv',names=['white','red','blue','green','animal']) # 指定表头
10 print(csvframe20, "\n-----*-----")
11
12 csvframe30 = pd.read_csv('pandas_data_test\myCSV_03.csv')
13 print(csvframe30, "\n-----*-----")
14 csvframe31 = pd.read_csv('pandas_data_test\myCSV_03.csv',index_col=['color','status']) #等级索引
15 print(csvframe31, "\n-----*-----")
16
17 txtframe4 = pd.read_table('pandas_data_test\ch05_04.txt',sep='\s+') # 根据正则解析
18 print(txtframe4, "\n-----*-----")
19 txtframe5 = pd.read_table('pandas_data_test\ch05_05.txt',sep=r'\D+',header=None,engine='python')
20 print(txtframe5, "\n-----*-----")
21 # 使用skiprows选项,可以排除多余的行。把要排除的行的行号放到数组中,赋给该选项即可。
22 txtframe6 = pd.read_table('pandas_data_test\ch05_06.txt',sep=',',skiprows=[0,1,3,6])
23 print(txtframe6)
24 Out[1]:
25 white red blue green animal
26 0 1 5 2 3 cat
27 1 2 7 8 5 dog
28 2 3 3 6 7 horse
29 3 2 2 8 3 duck
30 4 4 4 2 1 mouse
31 5 4 4 2 1 mou
32 -----*-----
33 white red blue green animal
34 0 1 5 2 3 cat
35 1 2 7 8 5 dog
36 2 3 3 6 7 horse
37 3 2 2 8 3 duck
38 4 4 4 2 1 mouse
39 5 4 4 2 1 mou
40 -----*-----
41 0 1 2 3 4
42 0 1 5 2 3 cat
43 1 2 7 8 5 dog
44 2 3 3 6 7 horse
45 3 2 2 8 3 duck
46 4 4 4 2 1 mouse
47 -----*-----
48 white red blue green animal
49 0 1 5 2 3 cat
50 1 2 7 8 5 dog
51 2 3 3 6 7 horse
52 3 2 2 8 3 duck
53 4 4 4 2 1 mouse
54 -----*-----
55 color status iteml item2 item3
56 0 black up 3 4 6
57 1 black down 2 6 7
58 2 white up 5 5 5
59 3 white down 3 3 2
60 4 white left 1 2 1
61 5 red up 2 2 2
62 6 red down 1 1 4
63 -----*-----
64 iteml item2 item3
65 color status
66 black up 3 4 6
67 down 2 6 7
68 white up 5 5 5
69 down 3 3 2
70 left 1 2 1
71 red up 2 2 2
72 down 1 1 4
73 -----*-----
74 white red blue green
75 0 1 5 2 3
76 1 2 7 8 5
77 2 3 3 6 7
78 -----*-----
79 0 1 2
80 0 0 123 122
81 1 1 124 321
82 2 2 125 333
83 -----*-----
84 white red blue green animal
85 0 1 5 2 3 cat
86 1 2 7 8 5 dog
87 2 3 3 6 7 horse
88 3 2 2 8 3 duck
89 4 4 4 2 1 mouse
从TXT文件读取部分数据
1 print(csvframe2, "\n-----*-----")
2 # nrows=2指定要获取的行数,skiprows=[2]删除对应行
3 csvfram20 = pd.read_csv('pandas_data_test\myCSV_02.csv',skiprows=[2],nrows=2,header=None)
4 print(csvfram20)
5 Out[2]:
6 0 1 2 3 4
7 0 1 5 2 3 cat
8 1 2 7 8 5 dog
9 2 3 3 6 7 horse
10 3 2 2 8 3 duck
11 4 4 4 2 1 mouse
12 -----*-----
13 0 1 2 3 4
14 0 1 5 2 3 cat
15 1 2 7 8 5 dog
另外一项既有趣又很常用的操作是切分想要解析的文本,然后遍历各个部分,逐一对其执行 某一特定操作。
例如,对于一列数字,每隔两行取一个累加起来,最后把和插人到Series对象中„这个小例 子理解起来很简单,
也没有实际应用价值,但是一旦领会了其原理,你就能将其用到更加复杂的情况。
1 csvframe1 = pd.read_table('pandas_data_test\myCSV_01.csv',sep=',')
2 print(csvframe1, "\n-----*-----")
3 out = pd.Series()
4 pieces = pd.read_csv('pandas_data_test\myCSV_01.csv',chunksize=4) # chunksize参数决定了每部分分割的行数
5 i = 0
6 for piece in pieces:
7 print(piece['white'])
8 out.at[i] = piece['white'].sum()
9 i += 1
10 print(out, "\n-----*-----")
11 Out[3]:
12 white red blue green animal
13 0 1 5 2 3 cat
14 1 2 7 8 5 dog
15 2 3 3 6 7 horse
16 3 2 2 8 3 duck
17 4 4 4 2 1 mouse
18 5 4 4 2 1 mou
19 -----*-----
20 0 1
21 1 2
22 2 3
23 3 2
24 Name: white, dtype: int64
25 4 4
26 5 4
27 Name: white, dtype: int64
28 0 8
29 1 8
30 dtype: int64
往CSV文件写入数据
1 print(csvframe1)
2 print(csvframe1.to_csv('pandas_data_test\ch05_07.csv'))
3 # 使用index和 header选项,把它们的值设置为False,可取消默认写入index和header
4 print(csvframe1.to_csv('pandas_data_test\ch05_07b.csv',index =False,header=False))
5 print(csvframe30.to_csv('pandas_data_test\ch05_08.csv'))
6 # 可以用to_csv()函数的na_rep选项把空字段替换为你需要的值。常用值有NULL、0和NaN
7 print(csvframe30.to_csv('pandas_data_test\ch05_09.csv',na_rep="空"))
8 Out[4]:
9 white red blue green animal
10 0 1 5 2 3 cat
11 1 2 7 8 5 dog
12 2 3 3 6 7 horse
13 3 2 2 8 3 duck
14 4 4 4 2 1 mouse
15 5 4 4 2 1 mou
16 None
17 None
18 None
19 None
进入文件夹我们可以看到相应的文件:
读写HTML文件
1 frame = pd.DataFrame(np.arange(4).reshape(2,2))
2 print(frame.to_html())
3 frame2 = pd.DataFrame( np.random.random((4,4)),index = ['white','black','red','blue1'],columns = ['up','down','right','left'])
4 s = ['']
5 s.append('My DataFrame ')
6 s.append(' ')
7 s.append(frame.to_html())
8 s.append('