学习笔记,仅供参考,有错必究
参考文献:编码问题:UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xb3 in position;
数据的加载与存储
文本文件的加载与存储
# 导入常用的包
import numpy as np
import matplotlib.pyplot as plt
# 支持多行输出
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = 'all' #默认为'last'
# windows环境下中文的正常显示(Linux中不够的,需要修改字体后重新加载)
plt.rcParams['font.sans-serif']=['SimHei']
#用来正常坐标轴的数字的负号
plt.rcParams['axes.unicode_minus']=False
读取csv文件
# 利用pandas读取csv文件
import pandas as pd
data = pd.read_csv('./data/test.csv', encoding='gb18030')
# 读取前5行
data.head()
城市 | 人均地区生产总值(元) | 第三产业占GDP比重 | 人均地方财政收入 | 对外贸易系数 | |
0 | 上海 | 78989 | 59.36 | 18135.913470 | 1.292077 |
1 | 南京市 | 67455 | 51.31 | 6899.471236 | 0.558394 |
2 | 无锡市 | 107365 | 41.30 | 8931.908085 | 0.615872 |
3 | 徐州市 | 25100 | 37.29 | 1716.189263 | 0.065778 |
4 | 常州市 | 70138 | 39.62 | 5999.911067 | 0.418762 |
# 跳过第2行读取(注意,第一行为行名)
data = pd.read_csv('./data/test.csv', encoding='gb18030', skiprows=[1])
data.head()
城市 | 人均地区生产总值(元) | 第三产业占GDP比重 | 人均地方财政收入 | 对外贸易系数 | |
0 | 南京市 | 67455 | 51.31 | 6899.471236 | 0.558394 |
1 | 无锡市 | 107365 | 41.30 | 8931.908085 | 0.615872 |
2 | 徐州市 | 25100 | 37.29 | 1716.189263 | 0.065778 |
3 | 常州市 | 70138 | 39.62 | 5999.911067 | 0.418762 |
4 | 苏州市 | 122565 | 39.41 | 11766.805100 | 1.821834 |
# 指定分隔符读取
data = pd.read_csv('./data/test.csv', encoding='gb18030', sep = ',')
data.head()
城市 | 人均地区生产总值(元) | 第三产业占GDP比重 | 人均地方财政收入 | 对外贸易系数 | |
0 | 上海 | 78989 | 59.36 | 18135.913470 | 1.292077 |
1 | 南京市 | 67455 | 51.31 | 6899.471236 | 0.558394 |
2 | 无锡市 | 107365 | 41.30 | 8931.908085 | 0.615872 |
3 | 徐州市 | 25100 | 37.29 | 1716.189263 | 0.065778 |
4 | 常州市 | 70138 | 39.62 | 5999.911067 | 0.418762 |
# 读取文件时指定列名
data = pd.read_csv('./data/test.csv', encoding='gb18030', names = ['city', 'a', 'b', 'c', 'd'])
data.head()
city | a | b | c | d | |
0 | 城市 | 人均地区生产总值(元) | 第三产业占GDP比重 | 人均地方财政收入 | 对外贸易系数 |
1 | 上海 | 78989 | 59.36 | 18135.91347 | 1.292076869 |
2 | 南京市 | 67455 | 51.31 | 6899.471236 | 0.558393574 |
3 | 无锡市 | 107365 | 41.3 | 8931.908085 | 0.615871884 |
4 | 徐州市 | 25100 | 37.29 | 1716.189263 | 0.065778095 |
存储csv文件
# 使用to_csv函数存储csv文件
df = pd.DataFrame(np.array(range(12)).reshape((6, 2)), columns = ['A', 'B'])
df.to_csv('./output/test_output.csv')
df.to_csv('./output/test_output2.csv', '|')
除了读取csv文件以外,还可以通过read_json(),read_html等方式读取json,html等文件;to_json(),to_html()等方式写出json,html等文件.
Excel表格
读取Excel文件
# 利用pandas读取excel文件
# 方式1
data1 = pd.read_excel("./data/test_excel.xlsx", 'Sheet1')
# 方式2
excel = pd.ExcelFile("./data/test_excel.xlsx")
data2 = pd.read_excel(excel, "Sheet2")
print("data1: \n", data1)
print("data2: \n", data2)
data1:
ID Name Age
0 1 Ada 19
1 2 Tim 20
2 3 Huang 21
3 4 Black 22
4 5 Jam 23
5 6 Pick 24
6 7 Julia 25
7 8 Kattle 26
data2:
ID Wage
0 1 15000
1 2 12000
2 3 13000
3 4 10000
4 5 3000
5 6 5000
6 7 8000
7 8 9000
写出Excel文件
data1 = data1[:5]
data1
data2 = data2[:6]
data2
# 创建新的Excel
excel = pd.DataFrame()
excel.to_excel("./output/test_output3.xlsx")
# 打开Excel,写入数据
writer = pd.ExcelWriter("./output/test_output3.xlsx")
data1.to_excel(writer, "Sheet1")
data2.to_excel(writer, "Sheet2")
# 最后一定要保存writer中的数据至Excel
writer.save()
ID | Name | Age | |
0 | 1 | Ada | 19 |
1 | 2 | Tim | 20 |
2 | 3 | Huang | 21 |
3 | 4 | Black | 22 |
4 | 5 | Jam | 23 |
ID | Wage | |
0 | 1 | 15000 |
1 | 2 | 12000 |
2 | 3 | 13000 |
3 | 4 | 10000 |
4 | 5 | 3000 |
5 | 6 | 5000 |