____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

DataFrame.to_csv(path_or_buf=None, sep=', ', na_rep='', float_format=None, columns=None, header=True, index=True,
                 index_label=None, mode='w', encoding=None, compression=None, quoting=None, quotechar='"',
                 line_terminator='\n', chunksize=None, tupleize_cols=None, date_format=None, doublequote=True,
                 escapechar=None, decimal='.')
  • path_or_buf : 文件路径,如果没有指定则将会直接返回字符串的 json
  • sep : 输出文件的字段分隔符,默认为 “,”
  • na_rep : 用于替换空数据的字符串,默认为''
  • float_format : 设置浮点数的格式(几位小数点)
  • columns : 要写的列
  • header : 是否保存列名,默认为 True ,保存
  • index : 是否保存索引,默认为 True ,保存
  • index_label : 索引的列标签名
# -*- coding:utf-8 -*-
@author:    tz_zs
import numpy as np
import pandas as pd
list_l = [[11, 12, 13, 14, 15], [21, 22, 23, 24, 25], [31, 32, 33, 34, 35]]
date_range = pd.date_range(start="20180701", periods=3)
df = pd.DataFrame(list_l, index=date_range,
                  columns=['a', 'b', 'c', 'd', 'e'])
print(df)
             a   b   c   d   e
2018-07-01  11  12  13  14  15
2018-07-02  21  22  23  24  25
2018-07-03  31  32  33  34  35
df.to_csv("tzzs_data.csv")
csv 文件内容:
,a,b,c,d,e
2018-07-01,11,12,13,14,15
2018-07-02,21,22,23,24,25
2018-07-03,31,32,33,34,35
read_csv = pd.read_csv("tzzs_data.csv")
print(read_csv)
   Unnamed: 0   a   b   c   d   e
0  2018-07-01  11  12  13  14  15
1  2018-07-02  21  22  23  24  25
2  2018-07-03  31  32  33  34  35
df.to_csv("tzzs_data2.csv", index_label="index_label")
csv 文件内容:
index_label,a,b,c,d,e
2018-07-01,11,12,13,14,15
2018-07-02,21,22,23,24,25
2018-07-03,31,32,33,34,35
read_csv2 = pd.read_csv("tzzs_data2.csv")
print(read_csv2)
  index_label   a   b   c   d   e
0  2018-07-01  11  12  13  14  15
1  2018-07-02  21  22  23  24  25
2  2018-07-03  31  32  33  34  35

pandas.DataFrame.to_json

将 Dataframe 写入到 json 文件

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

DataFrame.to_json(path_or_buf=None, orient=None, date_format=None, double_precision=10, force_ascii=True,
                  date_unit='ms', default_handler=None, lines=False, compression=None, index=True)
  • path_or_buf : 文件路径,如果没有指定则将会直接返回字符串的 json。
df.to_json("tzzs_data.json")
read_json = pd.read_json("tzzs_data.json")
print(read_json)
             a   b   c   d   e
2018-07-01  11  12  13  14  15
2018-07-02  21  22  23  24  25
2018-07-03  31  32  33  34  35

json 文件

"a": { "1530403200000": 11, "1530489600000": 21, "1530576000000": 31 "b": { "1530403200000": 12, "1530489600000": 22, "1530576000000": 32 "c": { "1530403200000": 13, "1530489600000": 23, "1530576000000": 33 "d": { "1530403200000": 14, "1530489600000": 24, "1530576000000": 34 "e": { "1530403200000": 15, "1530489600000": 25, "1530576000000": 35

pandas.DataFrame.to_html

将 Dataframe 写入到 html 文件

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

DataFrame.to_html(buf=None, columns=None, col_space=None, header=True, index=True, na_rep='NaN', formatters=None,
                  float_format=None, sparsify=None, index_names=True, justify=None, bold_rows=True, classes=None,
                  escape=True, max_rows=None, max_cols=None, show_dimensions=False, notebook=False, decimal='.',
                  border=None, table_id=None)
df.to_html("tzzs_data.html")
read_html = pd.read_html("tzzs_data.html")
print(read_html)
[   Unnamed: 0   a   b   c   d   e
0  2018-07-01  11  12  13  14  15
1  2018-07-02  21  22  23  24  25
2  2018-07-03  31  32  33  34  35]
print(read_html[0])
   Unnamed: 0   a   b   c   d   e
0  2018-07-01  11  12  13  14  15
1  2018-07-02  21  22  23  24  25
2  2018-07-03  31  32  33  34  35

HTML文件:

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>a</th>
      <th>b</th>
      <th>c</th>
      <th>d</th>
      <th>e</th>
  </thead>
  <tbody>
      <th>2018-07-01</th>
      <td>11</td>
      <td>12</td>
      <td>13</td>
      <td>14</td>
      <td>15</td>
      <th>2018-07-02</th>
      <td>21</td>
      <td>22</td>
      <td>23</td>
      <td>24</td>
      <td>25</td>
      <th>2018-07-03</th>
      <td>31</td>
      <td>32</td>
      <td>33</td>
      <td>34</td>
      <td>35</td>
  </tbody>
</table>

在浏览器中打开:

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

参考:Pandas Dataframes to_html: Highlighting table rows

# -*- coding: utf-8 -*-
@author: tz_zs
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
index = ["2018-07-01", "2018-07-02", "2018-07-03", "2018-07-04"]
df = pd.DataFrame(index=index)
df["一"] = [11, 12, 13, 14]
df["二"] = [21, 22, 23, 24]
print(df)
             一   二
2018-07-01  11  21
2018-07-02  12  22
2018-07-03  13  23
2018-07-04  14  24
axes_subplot = df.plot()
# print(type(axes_subplot)) #<class 'matplotlib.axes._subplots.AxesSubplot'>
plt.xlabel("time")
plt.ylabel("num")
plt.legend(loc="best")
plt.grid(True)
plt.savefig("test.png")
HEADER = '''
            <meta charset="UTF-8">
        </head>
FOOTER = '''
        <img src="%s" alt="" width="1200" height="600">
        </body>
    </html>
    ''' % ("test.png")
with open("test.html", 'w') as f:
    f.write(HEADER)
    f.write(df.to_html(classes='df'))
    f.write(FOOTER)

pandas.DataFrame.to_excel

将 DataFrame 写入 excel 文件

pandas.DataFrame.to_excel

DataFrame.to_excel(excel_writer, sheet_name='Sheet1', na_rep='', float_format=None, columns=None, 
                   header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None,
                   merge_cells=True, encoding=None, inf_rep='inf', verbose=True, freeze_panes=None)
#!/usr/bin/python2.7
# -*- coding:utf-8 -*-
@author:    tz_zs
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
list_l = [[1, 3, 3, 5, 4], [11, 7, 15, 13, 9], [4, 2, 7, 9, 3], [15, 11, 12, 6, 11]]
index = ["2018-07-01", "2018-07-02", "2018-07-03", "2018-07-04"]
df = pd.DataFrame(list_l, index=index, columns=['a', 'b', 'c', 'd', 'e'])
print(df)
             a   b   c   d   e
2018-07-01   1   3   3   5   4
2018-07-02  11   7  15  13   9
2018-07-03   4   2   7   9   3
2018-07-04  15  11  12   6  11
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

____tz_zsDataFrame数据的保存和读取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 文件 ...
问题出现与解决 Pandas进行数据处理之后,假如想将其转化为json,会出现一个bug,就是中文文字是以乱码存储的,也就是\uXXXXXX的形式,翻了翻官网文档,查了源码的参数,(多谢网友提醒)需要设置js001 = df1.to_json(force_ascii=False),即可显示中文编码 以下是原文的额外内容,DataFrame 转化为json数组 于是决定自己写一个.首先用demojson的类库尝试了一下,不行,依旧编码问题.之后考虑python 原生的 json 应该有编码转换功能,查了查官网文档,确实可以,不过要比平时多加一个参数 listXY_json = json.dum
用法:df.to_csv(输出路径,参数1,参数2,,参数3...) sep=',' #以逗号 ,作为数据的分隔符,如果分隔符不为逗号,则包含符双引号”“就会消失。分隔符为空格时,写法如下:df.to_csv('new.csv', sep='\t') na_rep='NA' #确实值保存为NA,如果不写,默认是空 shkiprows= 10 # 跳过前十行 usecols=['column1', 'column2', 'column3'] # 读取指定列 nrows = 10......
Python pandasDataFrame对象在使用to_csv()方法时,如何实现数据追加写入文本的功能? 有些时候,我们会定期的采集一些股票数据,来保持我们的数据文件的更新。最近简单的方式是,每次都全部采集,然后重新写入。这样有个问题,就是当数据量比较大的时候,会消耗很多的时间。 这时,我们可以只采集最新的股票数据,然后追加写入。dataframe当然可以做到这个事情,只要使用to_...
34_PandasCSV文件内容的导出和添加(to_csv) 如果要将panda.DataFramepandas.Series数据导出为csv文件或将其添加到现有的csv文件中,请使用to_csv()方法。由于分隔符可以更改,因此也可以将其另存为tsv文件。 将描述以下内容。 使用to_csv()方法导出并保存csv文件 仅导出特定列:参数columns 有/无标头,索引:参数header,index 编码:参数encoding 分隔符:参数sep 写入模式(新建,覆盖,添加):参数mode
最近需要将csv文件转成DataFrame并以json的形式展示到前台,故需要用到Dataframe的to_json方法 to_json方法默认以列名为键,列内容为值,形成{col1:[v11,v21,v31…],col2:[v12,v22,v32],…}这种格式,但有时我们需要按行来转为json,形如这种格式[row1:{col1:v11,col2:v12,col3:v13…},row2:{col1:v21,col2:v22,col3:v23…}] 通过查找官网我们可以看到to_json方法有一个参数为orient,其参数说明如下: orient : string Series >>> df = pd.DataFrame({"A":a,"B":b,"C":c}) Traceback (most recent call last): ValueError: arrays must all be same length >>> df = pd.DataFrame([a
df = pd.DataFrame(data=total_info, columns=[‘公司全名’, ‘公司简称’, ‘公司规模’, ‘融资阶段’, ‘区域’, ‘职位名称’, ‘工作经验’, ‘学历要求’, ‘薪资’, ‘职位福利’, ‘经营范围’, ‘职位类型’, ‘公司福利’, ‘第二职位类型’, ‘城市’]) df.to_csv(‘C:/Users/Shinelon/Desktop/Python_development_engineer.csv’, index=False) 结果出现乱码: 构造测试数据,其中在value中包含双引号 >>> import pandas as pd >>> df = pd.DataFrame([{"test": 'id={"name":"test"}'}]) 使用df.to_csv导出 >>> df.to_csv("test.txt", sep='|',index=False,header=True) 可以发现引号多了很多 这是由于csv格式中
pandas处理.csv文件时,有时我们希望保存的.csv文件没有表头,于是我去看了DataFrame.to_csv的document。 发现只需要再添加header=None这个参数就行了(默认是True), 下面贴上document: DataFrame.to_csv(path_or_buf=None, sep=', ', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, mode='w', encoding=None, compression=None, quo
(1)使用 df.to_csv(file_name2, encoding=‘utf-8’) 后还是编码有问题 data.to_csv('className_time.csv', encoding='utf-8') (2)使用 df.to_csv(file_name2, encoding=‘utf_8_sig’) 后中文乱码问题解决了 关于utf-8与utf_8_sig的区别: UTF-8以字节为编码单元,它的字节顺序在所有系统中都
这个错误是因为在 Python 中,字符串类型的对象 (str) 并没有 to_csv() 方法。to_csv() 是 pandas 库中 DataFrame 类的方法,用于将 DataFrame 对象输出为 CSV 格式的文件。 所以,如果您想要使用 to_csv() 方法,您需要先将字符串转换为 DataFrame 对象,然后再使用该方法。您可以使用 pandas 库中的 read_json() 方法将 JSON 数据转换为 DataFrame 对象,然后再使用 to_csv() 方法将其输出为 CSV 文件,示例代码如下: ```python import pandas as pd # 读取 JSON 数据为 DataFrame 对象 df = pd.read_json('data.json') # 将 DataFrame 对象输出为 CSV 文件 df.to_csv('data.csv', index=False) 注意,这里的 `data.json` 是您的 JSON 数据文件名,`data.csv` 是您想要输出的 CSV 文件名。另外,`index=False` 参数表示在输出 CSV 文件时不包含行索引。