当前位置:   article > 正文

【pandas】 之 DataFrame 保存为文件 (df.to_csv、df.to_json、df.to_html、df.to_excel)_df.tocsv

df.tocsv

____tz_zs

DataFrame 数据的保存和读取

  • df.to_csv 写入到 csv 文件
  • pd.read_csv 读取 csv 文件
  • df.to_json 写入到 json 文件
  • pd.read_json 读取 json 文件
  • df.to_html 写入到 html 文件
  • pd.read_html 读取 html 文件
  • df.to_excel 写入到 excel 文件
  • pd.read_excel 读取 excel 文件

pandas.DataFrame.to_csv

将 DataFrame 写入到 csv 文件

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_csv.html

  1. DataFrame.to_csv(path_or_buf=None, sep=', ', na_rep='', float_format=None, columns=None, header=True, index=True,
  2. index_label=None, mode='w', encoding=None, compression=None, quoting=None, quotechar='"',
  3. line_terminator='\n', chunksize=None, tupleize_cols=None, date_format=None, doublequote=True,
  4. escapechar=None, decimal='.')

参数:

  • path_or_buf : 文件路径,如果没有指定则将会直接返回字符串的 json
  • sep : 输出文件的字段分隔符,默认为 “,”
  • na_rep : 用于替换空数据的字符串,默认为''
  • float_format : 设置浮点数的格式(几位小数点)
  • columns : 要写的列
  • header : 是否保存列名,默认为 True ,保存
  • index : 是否保存索引,默认为 True ,保存
  • index_label : 索引的列标签名

.

  1. # -*- coding:utf-8 -*-
  2. """
  3. @author: tz_zs
  4. """
  5. import numpy as np
  6. import pandas as pd
  7. list_l = [[11, 12, 13, 14, 15], [21, 22, 23, 24, 25], [31, 32, 33, 34, 35]]
  8. date_range = pd.date_range(start="20180701", periods=3)
  9. df = pd.DataFrame(list_l, index=date_range,
  10. columns=['a', 'b', 'c', 'd', 'e'])
  11. print(df)
  12. """
  13. a b c d e
  14. 2018-07-01 11 12 13 14 15
  15. 2018-07-02 21 22 23 24 25
  16. 2018-07-03 31 32 33 34 35
  17. """
  18. df.to_csv("tzzs_data.csv")
  19. """
  20. csv 文件内容:
  21. ,a,b,c,d,e
  22. 2018-07-01,11,12,13,14,15
  23. 2018-07-02,21,22,23,24,25
  24. 2018-07-03,31,32,33,34,35
  25. """
  26. read_csv = pd.read_csv("tzzs_data.csv")
  27. print(read_csv)
  28. """
  29. Unnamed: 0 a b c d e
  30. 0 2018-07-01 11 12 13 14 15
  31. 1 2018-07-02 21 22 23 24 25
  32. 2 2018-07-03 31 32 33 34 35
  33. """
  34. df.to_csv("tzzs_data2.csv", index_label="index_label")
  35. """
  36. csv 文件内容:
  37. index_label,a,b,c,d,e
  38. 2018-07-01,11,12,13,14,15
  39. 2018-07-02,21,22,23,24,25
  40. 2018-07-03,31,32,33,34,35
  41. """
  42. read_csv2 = pd.read_csv("tzzs_data2.csv")
  43. print(read_csv2)
  44. """
  45. index_label a b c d e
  46. 0 2018-07-01 11 12 13 14 15
  47. 1 2018-07-02 21 22 23 24 25
  48. 2 2018-07-03 31 32 33 34 35
  49. """

 

pandas.DataFrame.to_json

将 Dataframe 写入到 json 文件

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_json.html

  1. DataFrame.to_json(path_or_buf=None, orient=None, date_format=None, double_precision=10, force_ascii=True,
  2. date_unit='ms', default_handler=None, lines=False, compression=None, index=True)

参数:

  • path_or_buf : 文件路径,如果没有指定则将会直接返回字符串的 json。

代码:

  1. df.to_json("tzzs_data.json")
  2. read_json = pd.read_json("tzzs_data.json")
  3. print(read_json)
  4. """
  5. a b c d e
  6. 2018-07-01 11 12 13 14 15
  7. 2018-07-02 21 22 23 24 25
  8. 2018-07-03 31 32 33 34 35
  9. """

json 文件

  1. {
  2. "a": {
  3. "1530403200000": 11,
  4. "1530489600000": 21,
  5. "1530576000000": 31
  6. },
  7. "b": {
  8. "1530403200000": 12,
  9. "1530489600000": 22,
  10. "1530576000000": 32
  11. },
  12. "c": {
  13. "1530403200000": 13,
  14. "1530489600000": 23,
  15. "1530576000000": 33
  16. },
  17. "d": {
  18. "1530403200000": 14,
  19. "1530489600000": 24,
  20. "1530576000000": 34
  21. },
  22. "e": {
  23. "1530403200000": 15,
  24. "1530489600000": 25,
  25. "1530576000000": 35
  26. }
  27. }

 

pandas.DataFrame.to_html

将 Dataframe 写入到 html 文件

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_html.html

  1. DataFrame.to_html(buf=None, columns=None, col_space=None, header=True, index=True, na_rep='NaN', formatters=None,
  2. float_format=None, sparsify=None, index_names=True, justify=None, bold_rows=True, classes=None,
  3. escape=True, max_rows=None, max_cols=None, show_dimensions=False, notebook=False, decimal='.',
  4. border=None, table_id=None)

代码:

  1. df.to_html("tzzs_data.html")
  2. read_html = pd.read_html("tzzs_data.html")
  3. print(read_html)
  4. """
  5. [ Unnamed: 0 a b c d e
  6. 0 2018-07-01 11 12 13 14 15
  7. 1 2018-07-02 21 22 23 24 25
  8. 2 2018-07-03 31 32 33 34 35]
  9. """
  10. #
  11. print(read_html[0])
  12. """
  13. Unnamed: 0 a b c d e
  14. 0 2018-07-01 11 12 13 14 15
  15. 1 2018-07-02 21 22 23 24 25
  16. 2 2018-07-03 31 32 33 34 35
  17. """

HTML文件:

  1. <table border="1" class="dataframe">
  2. <thead>
  3. <tr style="text-align: right;">
  4. <th></th>
  5. <th>a</th>
  6. <th>b</th>
  7. <th>c</th>
  8. <th>d</th>
  9. <th>e</th>
  10. </tr>
  11. </thead>
  12. <tbody>
  13. <tr>
  14. <th>2018-07-01</th>
  15. <td>11</td>
  16. <td>12</td>
  17. <td>13</td>
  18. <td>14</td>
  19. <td>15</td>
  20. </tr>
  21. <tr>
  22. <th>2018-07-02</th>
  23. <td>21</td>
  24. <td>22</td>
  25. <td>23</td>
  26. <td>24</td>
  27. <td>25</td>
  28. </tr>
  29. <tr>
  30. <th>2018-07-03</th>
  31. <td>31</td>
  32. <td>32</td>
  33. <td>33</td>
  34. <td>34</td>
  35. <td>35</td>
  36. </tr>
  37. </tbody>
  38. </table>

在浏览器中打开:

.

 

df.to_html 生成的是一个 html 格式的 table 表,我们可以在前后加入其他标签,丰富页面。ps:如果有中文字符,需要在 head 中设置编码格式。

参考:Pandas Dataframes to_html: Highlighting table rows

  1. # -*- coding: utf-8 -*-
  2. """
  3. @author: tz_zs
  4. """
  5. import matplotlib.pyplot as plt
  6. import numpy as np
  7. import pandas as pd
  8. index = ["2018-07-01", "2018-07-02", "2018-07-03", "2018-07-04"]
  9. df = pd.DataFrame(index=index)
  10. df["一"] = [11, 12, 13, 14]
  11. df["二"] = [21, 22, 23, 24]
  12. print(df)
  13. """
  14. 一 二
  15. 2018-07-01 11 21
  16. 2018-07-02 12 22
  17. 2018-07-03 13 23
  18. 2018-07-04 14 24
  19. """
  20. axes_subplot = df.plot()
  21. # print(type(axes_subplot)) #<class 'matplotlib.axes._subplots.AxesSubplot'>
  22. plt.xlabel("time")
  23. plt.ylabel("num")
  24. plt.legend(loc="best")
  25. plt.grid(True)
  26. plt.savefig("test.png")
  27. HEADER = '''
  28. <html>
  29. <head>
  30. <meta charset="UTF-8">
  31. </head>
  32. <body>
  33. '''
  34. FOOTER = '''
  35. <img src="%s" alt="" width="1200" height="600">
  36. </body>
  37. </html>
  38. ''' % ("test.png")
  39. with open("test.html", 'w') as f:
  40. f.write(HEADER)
  41. f.write(df.to_html(classes='df'))
  42. f.write(FOOTER)

.

.

 

pandas.DataFrame.to_excel

将 DataFrame 写入 excel 文件

pandas.DataFrame.to_excel

  1. DataFrame.to_excel(excel_writer, sheet_name='Sheet1', na_rep='', float_format=None, columns=None,
  2. header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None,
  3. merge_cells=True, encoding=None, inf_rep='inf', verbose=True, freeze_panes=None)

.

  1. #!/usr/bin/python2.7
  2. # -*- coding:utf-8 -*-
  3. """
  4. @author: tz_zs
  5. """
  6. import numpy as np
  7. import pandas as pd
  8. import matplotlib.pyplot as plt
  9. list_l = [[1, 3, 3, 5, 4], [11, 7, 15, 13, 9], [4, 2, 7, 9, 3], [15, 11, 12, 6, 11]]
  10. index = ["2018-07-01", "2018-07-02", "2018-07-03", "2018-07-04"]
  11. df = pd.DataFrame(list_l, index=index, columns=['a', 'b', 'c', 'd', 'e'])
  12. print(df)
  13. """
  14. a b c d e
  15. 2018-07-01 1 3 3 5 4
  16. 2018-07-02 11 7 15 13 9
  17. 2018-07-03 4 2 7 9 3
  18. 2018-07-04 15 11 12 6 11
  19. """
  20. df.to_excel("test.xls")

.

 

pandas.read_excel

读取 excel 

 

可能遇到的报错:

ImportError: Missing optional dependency 'xlrd'. Install xlrd >= 1.0.0 for Excel support Use pip or conda to install xlrd.

解决方法:安装 xlrd 包。

stackoverflow 讨论:Python: Pandas pd.read_excel giving ImportError: Install xlrd >= 0.9.0 for Excel support

 

其他文章:

http://www.dcharm.com/?p=584

https://blog.csdn.net/sinat_29957455/article/details/79059436

https://www.cnblogs.com/pengsixiong/p/5050833.html

.

end

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/856807
推荐阅读
相关标签
  

闽ICP备14008679号