机器学习准备工作:Pandas 使用入门

@高效码农  May 10, 2019

机器学习的前提条件和准备工作

参考网址:前提条件和准备工作

一、Pandas安装

pandas可以通过PyPI的 pip安装

pip install pandas

pandas依赖包:

  • setuptools:24.2.0或更高版本
  • NumPy:1.12.0或更高
  • python-dateutil:2.5.0或更高版本
  • pytz

注意 强烈建议您安装这些库,因为它们可以提高速度,尤其是在处理大型数据集时。

二、简介

pandas是一个Python包,提供快速,灵活和富有表现力的数据结构,非常适合许多不同类型的数据:

  • 具有异构类型列的表格数据,如SQL表或Excel电子表格中
  • 有序和无序(不一定是固定频率)时间序列数据。
  • 具有行和列标签的任意矩阵数据(均匀类型或异构)
  • 任何其他形式的观察/统计数据集。实际上不需要将数据标记为放置在pandas数据结构中

三、十分钟入门Pandas

导入包和依赖

import numpy as np
import pandas as pd

创建对象

1、通过传列表创建一个Series对象

Series对象的API文档

s = pd.Series([1, 3, 5, np.nan, 6, 8])
print(s)

输出结果:

0    1.0
1    3.0
2    5.0
3    NaN
4    6.0
5    8.0
dtype: float64
2、创建DataFrame对象

DataFrame对象API文档

#用字典构造DataFrame。
d = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(data=d)
print(df)

输出结果:

   col1  col2
0     1     3
1     2     4

查看数据

1、head([N])返回前n行
d = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(data=d)
# 返回第一行数据
print(df.head(1))

输出结果:

   col1  col2
0     1     3
head()不传递任何参数返回全部数据
2、tail([N])返回最后n行。
d = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(data=d)
# 返回最后一行数据
print(df.tail(1))

输出结果:

   col1  col2
1     2     4
更多数据操作API请参考http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html#pandas.DataFrame

可视化

可视化需要导入matplotlib包

pip install matplotlib

代码:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
ts = pd.Series(np.random.randn(1000), index = pd.date_range('20190509', periods=1000))
ts = ts.cumsum()
ts.plot()
plt.show()

输出结果图:
Figure_1.png

数据写入Excel/读出Excel

写入Excel

to_excel()方法可以使用Python模块写入Excel 2003(.xls)和Excel 2007+(.xlsx)文件

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from openpyxl import Workbook
ts = pd.Series(np.random.randn(1000), index = pd.date_range('20190509', periods=1000))
df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=['A', 'B', 'C', 'D'])
df.to_excel('foo.xlsx', sheet_name='Sheet1')
读取Excel

read_excel()方法可以使用Python模块读取Excel 2003(.xls)和Excel 2007+(.xlsx)文件

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from openpyxl import Workbook
import xlrd
ts = pd.Series(np.random.randn(1000), index = pd.date_range('20190509', periods=1000))
df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=['A', 'B', 'C', 'D'])
# df.to_excel('foo.xlsx', sheet_name='Sheet1')
print(pd.read_excel('foo.xlsx', 'Sheet1', index_col=None, na_values=['NA']))

输出结果:

  Unnamed: 0         A         B         C         D
0   2019-05-09 -1.046397 -0.112939  0.974725  1.813917
1   2019-05-10  0.259599  1.622188  1.302376 -0.957691
2   2019-05-11  0.965145 -0.604131 -2.394720  1.174101
3   2019-05-12  0.679404 -0.749037  0.818017 -0.806865
4   2019-05-13  0.276341 -0.852112 -0.218508 -0.371901
5   2019-05-14 -0.099482  0.664920 -0.098250 -1.740499
6   2019-05-15 -0.385444 -0.743308 -1.020885 -1.485595
7   2019-05-16 -0.845130 -0.816570 -0.080318  0.807498
8   2019-05-17  0.201600 -1.066372  0.320015 -1.782895
9   2019-05-18 -1.246202 -0.403461  0.482306 -1.101779
10  2019-05-19 -0.019618  0.837803 -0.722893  1.815060
11  2019-05-20  0.021187 -1.622634 -3.167830 -0.526307
12  2019-05-21 -1.233084  0.765401 -1.314020 -0.570234
13  2019-05-22 -0.664462 -0.245917 -0.309774 -0.083252
14  2019-05-23 -0.070039  1.394489 -0.458618 -0.482249
15  2019-05-24  1.873507  0.181402 -0.031043 -0.189374
16  2019-05-25 -0.622836 -0.954538  0.123703  1.734610
17  2019-05-26  1.551736 -0.773704 -0.769101 -0.977409
18  2019-05-27 -1.616786  0.234972  1.272347 -0.998941
19  2019-05-28  0.135639  1.208109  0.741068  0.638912
20  2019-05-29 -1.506164 -1.778522 -0.474698 -2.461907
21  2019-05-30 -0.040489  0.153388  0.073850  0.056990
22  2019-05-31  0.175437 -0.302903 -1.388890  0.338808
23  2019-06-01 -0.060980  1.314879  0.453097 -0.394947
24  2019-06-02  1.161056 -0.481036 -1.271535  0.579596
25  2019-06-03 -0.512491  0.074971 -1.272754  0.798560
26  2019-06-04  0.535749 -0.599042 -0.771529 -0.882622
27  2019-06-05  0.938610 -0.431517  0.286557  2.018607
28  2019-06-06  0.100279  0.370312 -1.048766  2.541211
29  2019-06-07 -0.515611 -2.067672 -0.299344  1.088438
..         ...       ...       ...       ...       ...
970 2022-01-03  1.010301  0.004029 -1.186850  0.764020
971 2022-01-04  1.053440 -0.036742 -0.013136 -1.154893
972 2022-01-05  1.122546 -1.520269 -1.363195 -1.131316
973 2022-01-06  0.359485 -1.281590 -0.193030 -1.058258
974 2022-01-07  0.190706 -0.622970  0.034609 -0.505958
975 2022-01-08  0.919020 -1.428432  0.268933  0.950938
976 2022-01-09 -0.597984  0.276934  0.025760  1.359294
977 2022-01-10  0.360992 -0.364269 -0.227758  0.377190
978 2022-01-11  1.127601  1.411818 -0.910560 -0.673511
979 2022-01-12  2.998876 -0.544023  2.707983 -1.928286
980 2022-01-13  0.186954 -0.917718  1.465059  2.059870
981 2022-01-14  0.071602 -0.910401 -0.190536  0.055071
982 2022-01-15  0.283898 -1.537629  0.063100  1.538713
983 2022-01-16  2.066996 -0.461288 -1.847752 -1.540087
984 2022-01-17  0.329031 -0.913301 -0.256891 -0.389099
985 2022-01-18  1.785928  0.742949 -1.599816 -0.689316
986 2022-01-19  0.923402 -0.079466  0.533646 -1.066317
987 2022-01-20  0.500906 -1.385184 -1.378920  0.944822
988 2022-01-21  0.720500 -0.365835  0.375643  0.091686
989 2022-01-22  0.915461  1.856851 -0.003953 -2.091525
990 2022-01-23  0.762105  0.123592 -0.002968  1.682612
991 2022-01-24 -2.965871 -0.504180  0.579855  1.055369
992 2022-01-25 -0.877629 -0.712530  0.165810  0.525049
993 2022-01-26 -0.000454 -0.693073  1.495790 -0.587068
994 2022-01-27 -0.979516 -0.905312  0.885960 -1.316406
995 2022-01-28  1.315408 -0.660843 -1.317931  1.785182
996 2022-01-29 -0.471732 -0.276165 -0.337215 -0.478307
997 2022-01-30 -1.005565  2.434502 -1.146683  0.852022
998 2022-01-31  0.985965  1.613141 -0.567136 -0.528416
999 2022-02-01 -0.252733 -1.975451  0.238089  0.689168

[1000 rows x 5 columns]


评论已关闭