本文内容来自阿里云Pandas快速入门
本文所用代码。已经上传Github:代码下载点击此处
基础处理
高级处理
结构: DataFrame对象是既有行索引,又有列索引的二维数组。
总结:
# 创建一个符合正态分布的十只股票五天的涨跌幅数据
stock_change = np.random.normal(0, 1, (10, 5))
# 查看numpy创建的stock_change
array([[-0.78217422, 0.55843885, -1.52214351, 1.13126992, -1.38267547],
[-1.30626036, -0.58487159, -0.0305207 , 1.0450732 , -0.59120378],
[ 2.25801794, 1.0116284 , -0.49409647, -1.27816253, 1.74229943],
[ 0.06727762, 1.41381828, 1.48130795, 1.40653067, -1.3991669 ],
[-2.29712979, 0.03264761, 0.50069174, -0.03275081, -0.30891757],
[-0.7156338 , 1.65142142, -0.61900504, -0.59917041, -1.45358826],
[-2.21144185, -0.95233881, 0.44246166, -0.11327413, 1.57217482],
[-1.22463947, 0.12924767, 1.4210064 , -1.93627664, 1.08923403],
[-0.83111914, -1.34418871, -0.86708152, 1.41309277, -0.35246175],
[-0.76326977, 0.44256111, 0.63045517, 0.99139858, 1.19290955]])
pandas DataFrame
给股票涨跌幅数据添加行索引
添加列索引
属性
不能单独修改索引,需要重新构造新的索引。
正确修改索引值
重设索引,原索引默认不丢弃
丢弃原索引

使用字典生成DataFrame
设置新的索引
设置多个索引,以年和月份
运行以下代码出现错误,因为Pandas从版本0.20.0开始弃用Panel,我安装的是pandas1.0.1,已经弃用。推荐使用DataFrame,截图来自课程。
TypeError: object() takes no parameters
p = pd.Panel(np.arange(24).reshape(4,3,2),items=list("ABCD"),
major_axis=pd.date_range("20130101", periods=3),
minor_axis=["first","second"])
# 从不同维度查看数据
p["A"]
p["D"]
p.major_xs("2013-01-01")
p.minor_xs("first")
思考:如何获取dataframe中某只股票的不同时间的数据?这样的结构是什么?
因为课程没有提供stock_day.csv等资料的下载,所以我从github上的其他工程里找到了这个股票数据,地址:stock_day.csv数据来源
只需要下载data文件夹即可,可以使用downgit下载。DownGit 链接 需要爬,你懂的!需要这个文件的,留邮箱,我发过去。
df.sort_values(key=, ascending=)
"""
key:单个键或者多个键进行排序,默认升序;
ascending = False:降序
ascending = True:升序
"""
单字段排序
多字段排序
使用sort_index()方法进行排序
DataFrame.plot(self, *args, **kwargs)[source]
Make plots of Series or DataFrame.
Uses the backend specified by the option plotting.backend. By default, matplotlib is used.
"""
Parameters
dataSeries or DataFrame
The object for which the method is called.
xlabel or position, default None
Only used if data is a DataFrame.
ylabel, position or list of label, positions, default None
Allows plotting of one column versus another. Only used if data is a DataFrame.
kindstr
The kind of plot to produce:
‘line’ : line plot (default)
‘bar’ : vertical bar plot
‘barh’ : horizontal bar plot
‘hist’ : histogram
‘box’ : boxplot
‘kde’ : Kernel Density Estimation plot
‘density’ : same as ‘kde’
‘area’ : area plot
‘pie’ : pie plot
‘scatter’ : scatter plot
‘hexbin’ : hexbin plot.
因为阿里云上的本课程并未提供代码和课程资料下载,所以我跟随授课老师,手敲了代码,并从github上找到了入门进阶篇用的两个csv文件,为了方便下载,本文所用数据和代码已经上传Github:有需要的同学点击此处下载代码和数据
判断数据中是否存在NaN:pd.isnull(df)、pd.notnull(df)
处理方式:
例如?等标点符号
性别 年龄
A 1 23
B 2 30
C 1 18
物种 毛发
A 1
B 2
C 3
理想的分类设定,one-hot编码/哑编码
男 女 年龄
A 1 0 23
B 0 1 30
C 1 0 18
连续属性的离散化就是将连续属性的值域上,将值域划分为若干个离散的区间,最后用不同的符号或整数值代表落在每个子区间的属性值。
连续属性离散化的目的是为了简化数据结构,数据离散化技术可以用来减少给定连续属性值得个数。离散化方法经常作为数据挖掘的工具。
交叉表:用于计算已列数据对于另外一列数据的分组个数(寻找两个列之间的关系)
代码详见github。有需要的同学点击下载代码和数据