文章目录
1 文件读取与储存
- csv(Comma-Separated values,逗号分隔值,有时也称为字符分隔值,因为分隔字符也可以不是逗号)是纯文本形式存储表格数据,既可以用记事本打开,也可以用EXCEL打开。CSV文件由任意数目的记录组成,记录间以换行符分隔;每条记录由字段组成,字段间的分隔符一般是逗号或制表符
- json是轻量级的数据交换格式,完全独立于编程语言的文本格式来存储和表示数据,特点是简洁和清晰的层次结构.json是轻量级的?这是因为json不管是编写,还是解析都很高效,而且在传输过程中采用了压缩技术,更加的节省带宽·
- 我们对HTML并不陌生,它是超文本标记语言(Hyper Text Markup Language)
- EXCEL就不介绍了,大家都很熟悉
- pickle相对就没那么眼熟了,pickle其实是个模块,模块中的序列化过程将文本信息转变为二进制数据流。这样就信息就容易存储在硬盘之中,而不是像将数据放入内存中那样关机断电就会丢失数据。 相反的,其反序列化便可以得到原始的数据
- CSV
pd.read_csv(path)
usecols=
names=
dataframe.to_csv(path)
columns=[]
index=False
header=False
- HDF5
hdf5 存储 3维数据的文件
key1 dataframe1二维数据
key2 dataframe2二维数据
pd.read_hdf(path, key=)
df.to_hdf(path, key=)
- JSON
pd.read_json(path)
orient="records"
lines=True
df.to_json(patn)
orient="records"
lines=True
在表格的Reader和Writer两列包含了对各种数据形式的读写函数
对于读,统一都是以read加下划线加需要读取的数据形式
对于写,统一都是以to加下划线加需要写入的数据形式
CSV
注:需要人为手动设置列索引
data = pd.read_csv("stock_day2.csv", names=["open", "high", "close", "low", "volume", "price_change", "p_change", "ma5", "ma10", "ma20", "v_ma5", "v_ma10", "v_ma20", "turnover"])
data[:10]
open | high | close | low | volume | price_change | p_change | ma5 | ma10 | ma20 | v_ma5 | v_ma10 | v_ma20 | turnover | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2018-02-27 | 23.53 | 25.88 | 24.16 | 23.53 | 95578.03 | 0.63 | 2.68 | 22.942 | 22.142 | 22.875 | 53782.64 | 46738.65 | 55576.11 | 2.39 |
2018-02-26 | 22.80 | 23.78 | 23.53 | 22.80 | 60985.11 | 0.69 | 3.02 | 22.406 | 21.955 | 22.942 | 40827.52 | 42736.34 | 56007.50 | 1.53 |
2018-02-23 | 22.88 | 23.37 | 22.82 | 22.71 | 52914.01 | 0.54 | 2.42 | 21.938 | 21.929 | 23.022 | 35119.58 | 41871.97 | 56372.85 | 1.32 |
2018-02-22 | 22.25 | 22.76 | 22.28 | 22.02 | 36105.01 | 0.36 | 1.64 | 21.446 | 21.909 | 23.137 | 35397.58 | 39904.78 | 60149.60 | 0.90 |
2018-02-14 | 21.49 | 21.99 | 21.92 | 21.48 | 23331.04 | 0.44 | 2.05 | 21.366 | 21.923 | 23.253 | 33590.21 | 42935.74 | 61716.11 | 0.58 |
2018-02-13 | 21.40 | 21.90 | 21.48 | 21.31 | 30802.45 | 0.28 | 1.32 | 21.342 | 22.103 | 23.387 | 39694.65 | 45518.14 | 65161.68 | 0.77 |
2018-02-12 | 20.70 | 21.40 | 21.19 | 20.63 | 32445.39 | 0.82 | 4.03 | 21.504 | 22.338 | 23.533 | 44645.16 | 45679.94 | 68686.33 | 0.81 |
2018-02-09 | 21.20 | 21.46 | 20.36 | 20.19 | 54304.01 | -1.50 | -6.86 | 21.920 | 22.596 | 23.645 | 48624.36 | 48982.38 | 70552.47 | 1.36 |
2018-02-08 | 21.79 | 22.09 | 21.88 | 21.75 | 27068.16 | 0.09 | 0.41 | 22.372 | 23.009 | 23.839 | 44411.98 | 48612.16 | 73852.45 | 0.68 |
2018-02-07 | 22.69 | 23.11 | 21.80 | 21.29 | 53853.25 | -0.50 | -2.24 | 22.480 | 23.258 | 23.929 | 52281.28 | 56315.11 | 74925.33 | 1.35 |
# 保存'open'列的数据
data[:10].to_csv("test.csv", columns=["open"])
#不保存行索引
data[:10].to_csv("test.csv", columns=["open"],index = False)
path =r' D:\course \bike hour.csv'
res =pd.read_csv(path)
res
记得在Python转义符’’\”,在windows下的目录字符串中通常有斜杠,而斜杠在 Python的字符串中有转义的作用。如果我们不告诉Python这个斜杠不是转义符,它就会把\b”理解是退格(ASCII码值为008x为十六进制),所以我们需要在路径前加上”r”告诉Python保持字符串原始值
HTML
read_html 作用快速获取在html中页面table格式数据
url ='https://www.fdic.gov/bank/individual/failed/banklist.html'
res2=pd.read_html(url)
res2
我们可以看到read_html把网页上的表格型数据解析为一个列表。其中表示列标签换行用to_html可以看到table类型的表格网页结构
df = pd.DataFrame(np.random.rand(2,2))
df
0 | 1 | |
---|---|---|
0 | 0.099625 | 0.445910 |
1 | 0.500740 | 0.461739 |
print(df.to_html())
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>0</th>
<th>1</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>0.099625</td>
<td>0.445910</td>
</tr>
<tr>
<th>1</th>
<td>0.500740</td>
<td>0.461739</td>
</tr>
</tbody>
</table>
2.缺失值处理
处理类型一般有两种:
- 删除含有缺失值的样本(多)
- 替换/插补(少)
2.1 如何处理nan
一般分为两步
-
判断数据中是否存在NaN
pd.isnull(df) 有缺失返回True pd.notnull(df)
-
删除含有缺失值的样本
df.dropna(inplace=False) 替换/插补 df.fillna(value, inplace=False)
import pandas as pd
import numpy as np
movie = pd.read_csv("./IMDB-Movie-Data.csv")
movie
Rank | Title | Genre | Description | Director | Actors | Year |
---|