这篇文章是alexander

<b>【pandas起源与目标】</b>
1. 开源python库
2. 实际数据分析-<b>高速</b><b>/</b><b>高效</b><b>/</b><b>简单</b>
3. 无缝连接工作流
4. wes mckinney 2008年开始编写, 再到现在continuum analytics的anaconda
5. 定期更新的稳定项目
<b>【特征】</b>
1. 支持csv, excel, json, sql, sas,
clipboard, hdf5等数据格式
2. 数据清洗
3. 重塑(reshape)、数据合并(joins & merge)、数据透视(pivot)
4.<b>数据可视化</b>
5. 良好支持jupyter notebooks (ipython)
6.<b>类似数据库操作</b>
7. 高性能
1. <b>dataseries</b>
& dataframe
2. <b>i/o</b><b>(输入</b><b>/</b><b>输出)</b>
3.data
analysis &aggregation<b>(数据分析</b><b>&</b><b>聚合)</b>
4.indexes<b>(索引)</b>
5. <b>visualization</b><b>(可视化)</b>
6.interacting
with the data<b>(数据交互)</b>
note: 下面的例子都是在时间戳--温度数据上运行的,示例如下:<b></b>
得到:
1. 使用<b>matplotlib</b><b>库</b>,.plot()
函数
2. 可定制,可扩展
3. 盒图、条形图、散点图等
4. 也可以使用bokeh库或seaborn库
1. <b>一维有标签数组结构</b>,可以存入任一种python的数据类型(integers,
strings, floating point numbers, python objects, etc.)
2. 序列的标签通常称为<b>索引(</b><b>index</b><b>)</b>
3. 如果index没给定,会自动创建()
4. pd.series()函数中的参数,如data, index和dtype, 均是可选的
<b>数据选择与访问方式</b>:
1. 可以通过<b>标签(</b><b>index</b><b>)</b>选择,也可以通过<b>位置</b>来选择<b>(从</b><b>0</b><b>开始)</b>;
2. 通过<b>切片</b><b>/</b><b>布尔索引</b>访问数据,例如:
<b>二维有标签</b>数据结构,如2维numpy数组,关于索引,有如下规定:
1.如果没有指定索引,将会自动创建;
2.<b>索引可以重置或者替换</b>;
3. 类型:<b>位置,时间戳,时间范围,标签</b>…;
4.一个索引号可能会出现多次(<b>不唯一</b>)
<b>例</b><b>1</b>. 给列命名
输出:
<b>例</b><b>2</b>. 对数据进行运算:
第3行仅仅是对temperature这一列进行了运算,则输出:
而第4行和第6行为不存在的列(temperature f)赋值,创建新列(temperaturef),均输出:
<b>timestamp</b>
<b>temperature</b>
<b>temperature f</b>
<b>0</b>
2014-09-26t03:50:00
14.0
57.2
<b>1</b>
2014-08-10t05:00:00
<b>2</b>
2014-08-21t22:50:00
12.0
53.6
<b>3</b>
2014-08-17t13:20:00
16.0
60.8
<b>4</b>
2014-08-06t01:20:00
<b>例3</b>. 两列之间也可以直接进行运算,如
<b>ruleoftumb</b>
4.085714
4.466667
3.800000
series和dataframe的方法实际上并没有修改原始的series和dataframe,而是返回一个新的series或dataframe,可以使用<b>inplace</b>参数来决定<b>是否要用新结果替换掉原来的数据</b>。
原列名被替换,输出:
<b>bad_rule</b>
删除bad_rule列,使用新dataframe替代原dataframe
1. describe()
2. groupby()
3. groupby([]) & unstack()
4. mean(), sum(), median(),…
<b>例1</b>. 创建新列:
<b>deviation</b>
-1.590951
-3.590951
0.409049
<b>例2</b>. 用groupby()分组
<b>例3</b>. 输出指定数据统计信息
nan表示空值,可以使用drop( )移除;也可以用<b>默认值替换</b>或者<b>前向填充</b><b>/</b><b>后向填充</b>
<b>例</b><b>1.</b> 使用isnull( )函数判断是否为空
<b>例2</b>. 删除缺失值:
false ,因为已经删除缺失值,并且<b>用删除之后的数据替换掉原数据</b>,所以判断是否存在空值时,返回false,即<b>不存在空数据</b>。
在进行时间序列分析时,先将dataframe的索引值<b>由默认的数字索引变为时间戳索引</b>:
此时,dataframe变为如下形式:
画出dataframe前100行,此时<b>图的横坐标不再是数值索引,而是时间戳</b>。如下:
此时,<b>对</b><b>dataframe</b><b>加入weekday</b><b>列和weekend</b><b>列</b>,
目前,已经得到每天的数据包括时间戳,摄氏温度,华氏温度,偏差以及周几和是否周末,统计输出如下:
那么就可以进一步<b>分析温度随着时间的变化趋势</b>,比如观察每周气温的变化情况:
也可以<b>分析指定时间内的温度变化趋势</b>
<b></b>
<b><b></b></b>
重采样是对原样本重新处理的一个方法,是一个对常规时间序列数据重新采样和频率转换的便捷的方法,分为降采样和升采样,将高频率数据聚合到低频率数据称为降采样(downsampling),将低频率转换到高频率称为升采样(upsampling)。
首先用dataframe进行<b>重采样</b>:
输出:
又如<b>对</b><b>series</b><b>进行降采样</b>:
<b>升采样</b>,采样频率从5分钟变到100秒,
note:
statsmodels是一个包含统计模型、统计测试和统计数据挖掘python模块。对每一个模型都会生成一个对应的统计结果。统计结果会和现有的统计包进行对比来保证其正确性。
如上图所示,是某种商品的历史销售数据,为了更好地分析商品销售变化趋势,将销售时序数据分解为长期趋势、季节趋势和随机成分。statsmodels支持两类分解模型,加法模型和乘法模型。默认采用加法模型,即分解后的这3个趋势相加要等于原始数据。
在得到不同的分解成分后,就可以使用时间序列模型对各个成分进行拟合,进行商品销量预测,这对商家库存管理和销售是很有帮助的。
欧洲最大的python会议,欢迎参加。
作者介绍
为创业和业界提供咨询服务
europython
& pyconde 的组织者和程序委员会主席
mongodb大师
曾在mongodb
world, europython, pydata等大会上作学术报告
以上为译文
文章原标题《introduction to pandas
and time series analysis》,作者:alexander c. s. hendorf,译者:李烽 审校:海棠-段志成
ps:中文译制pdf版食用更佳,可读性更强,见附件。