《Python数据分析与挖掘实战第三章》(笔记)

2019-04-17  本文已影响0人  想想17

第三章 

代码3-1

p=data.boxplot(reutrn_type='dict')#更正~ 

pandas官方文档

The parameter return_type can be used to select the type of element returned by boxplot.  When return_type='axes' is selected, the matplotlib axes on which the boxplot is drawn are returned:

正确代码如下:

import pandas as pd

catering_sale='E:\python程序编辑\Python数据分析与挖掘实战\chapter3\demo\data\catering_sale.xls'

data=pd.read_excel(catering_sale,index_col=u'日期')#读取数据,以日期列为索引列

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif']=['SimHei']#显示中文正常标签

plt.rcParams['axes.unicode_minus']=False#用来显示正常负号

plt.figure()#建立图像

p = data.boxplot(return_type='dict') #画箱线图,直接使用DataFrame的方法

x=p['fliers'][0].get_xdata()#'flies'即为异常值的标签

y=p['fliers'][0].get_ydata()

y.sort()

for i in range(len(x)):

    if i>0:

        plt.annotate(y[i],xy=(x[i],y[i]),xytext=(x[i]+0.05-0.8/(y[i]-y[i-1]),y[i]))

    else:

        plt.annotate(y[i],xy=(x[i],y[i]),xytext=(x[i]+0.08,y[i]))

plt.show()

fliers层表示离散点,使用 P['fliers'][0]获取点坐标,然后get_ydata()获取点纵坐标,get_xdata()是横坐标。

plt.annotate()的函数解析:

更详细的解释:plt.annotate()函数解析 - TeFuirnever的博客 - CSDN博客

plt.annotate(string, xy=(np.pi/2, 1.0), xytext=((np.pi/2)+0.15, 1,5), weight="bold", color="b", arrowprops=dict(arrowstyle="->", connectionstyle="arc3", color="b"))

string:图形内容的注释文本,xy:被注释图形内容的位置坐标,xytext:注释文本的位置坐标,weight:注释文本的字体粗细风格,color:注释文本的字体颜色,arrowprops:指示被注释内容的箭头的属性字典。

代码3-2

from __future__ imports must occur at the beginning of the file问题解决。解决方法(将 from_future_impotrt----前面所有的注释和文字全部删除即可)

pandas中loc和iloc的用法的区别:

详细说明见Pandas中loc和iloc函数用法详解 - 破晓时刻的博客 - CSDN博客

在python中出现了:

AttributeError: 'Series' object has no attribute 'sort'

将data.sort(ascending=False),改为data.sort_values(ascending=False)


2019.4.19

python中D.T表示矩阵D的转置

pandas中提供了一些非常方便使用的计算统计特征的函数,主要有累积计算cum(),和滚动计算pd.rolling()

cum系列函数是作为DataFrame和Series对象的方法而出现的,命令为D.cumsum(),而rolling系列是pandas的是函数,并不是DataFrame或Series的函数,它们的使用格式为pd.rolling_mean(D,k),意思是每k列计算一次均值,滚动计算。

3.3.2中代码复现出现的错误

运行pd.rolling_mean(D,1)会出现

AttributeError: module 'pandas' has no attribute 'rolling_mean'

将上述代码改为D.rolling(2).sum()

x=np.linspace(0,2*np.pi,50) #其中2*np.pi就是2pi的意思,只是在利用pi是调用了Python中的numpy库

plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%1.2f%%',startangle=90,shadow=True)

autopct='%1.2f%%' 中1.2小数点前面的数对结果没有影响,后面的数表示保留几位小数。这个输出的是百分比形式的数字。

x.plot(label=u'原始数据',legend=True) 中的legend是是否显示标签的意思

上一篇下一篇

猜你喜欢

热点阅读