____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 pandas 的DataFrame对象在使用to_csv()方法时,如何实现数据追加写入文本的功能?
有些时候,我们会定期的采集一些股票数据,来保持我们的数据文件的更新。最近简单的方式是,每次都全部采集,然后重新写入。这样有个问题,就是当数据量比较大的时候,会消耗很多的时间。
这时,我们可以只采集最新的股票数据,然后追加写入。dataframe当然可以做到这个事情,只要使用to_...
34_
Pandas对
CSV文件内容的导出和添加(to_
csv)
如果要将panda.
DataFrame或
pandas.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 文件时不包含行索引。