python数据分析之(3)pandas
来源:互联网 发布:广联达软件教学 编辑:程序博客网 时间:2024/06/05 22:42
pandas的安装可以参见前面的博文,http://blog.csdn.net/piaoxuezhong/article/details/54023951
pandas 是基于 Numpy 构建的含有更高级数据结构和工具的数据分析包
类似于 Numpy 的核心是 ndarray,pandas 也是围绕着 Series 和 DataFrame 两个核心数据结构展开的 。Series 和 DataFrame 分别对应于一维的序列和二维的表结构。pandas 约定俗成的导入方法如下:
>>> from pandas import Series,DataFrame>>> import pandas as pd
1.Series
Series 可以看做一个定长的有序字典。基本任意的一维数据都可以用来构造 Series 对象:>>> s=Series([1,2,'abc'])>>> s0 11 22 abcdtype: object
Series 对象包含两个主要的属性:index 和 values,分别为上例中左右两列。因为传给构造器的是一个列表,所以 index 的值是从 0 起递增的整数,如果传入的是一个类字典的键值对结构,就会生成 index-value 对应的 Series;或者在初始化的时候以关键字参数显式指定一个 index 对象:
>>> s=Series(data=[1,2,'abc'],index=['no1','no2','no3'])>>> sno1 1no2 2no3 abcdtype: object>>> s.indexIndex([no1, no2, no3], dtype=object)>>> s.valuesarray([1, 2, abc], dtype=object)Series 对象的元素会严格依照给出的 index 构建,如果 data 参数是有键值对的,那么只有 index 中含有的键会被使用;如果 data 中缺少响应的键,即使给出 NaN 值,这个键也会被添加。Series 的 index 和 values 的元素之间虽然存在对应关系,但这与字典的映射不同。index 和 values 实际仍为互相独立的 ndarray 数组。Series 这种使用键值对的数据结构最大的好处在于,Series 间进行算术运算时,index 会自动对齐。
另外,Series 对象和它的 index 都含有一个 name 属性:
>>> s.name='series_s'>>> s.index.name='s\' index'>>> ss' indexno1 1no2 2no3 abcName: series_s, dtype: object
2.DataFrame
DataFrame 是一个表格型的数据结构,它含有一组有序的列(类似于 index),每列可以是不同的值类型(不像 ndarray 只能有一个 dtype)。基本上可以把 DataFrame 看成是共享同一个 index 的 Series 的集合。DataFrame 的构造方法与 Series 类似,只不过可以同时接受多条一维数据源,每一条都会成为单独的一列:
>>> data={'name':['fcq','jj','wym','xrr'],\'year':[1989,1989,1989,1988],\ 'm/f':['m','f','f','f']}>>> data{'m/f': ['m', 'f', 'f', 'f'], 'name': ['fcq', 'jj', 'wym', 'xrr'], 'year': [1989, 1989, 1989, 1988]}>>> df=DataFrame(data)>>> df m/f name year0 m fcq 19891 f jj 19892 f wym 19893 f xrr 1988虽然参数 data 看起来是个字典,但字典的键并非充当 DataFrame 的 index 的角色,而是 Series 的 “name” 属性。这里生成的 index 仍是 “0123”。较完整的 DataFrame 构造器参数为:DataFrame(data=None,index=None,coloumns=None),columns 即 “name”:
>>> df=DataFrame(data,index=['no1','no2','no3','no4'])>>> df m/f name yearno1 m fcq 1989no2 f jj 1989no3 f wym 1989no4 f xrr 1988
>>> df.columnsIndex([m/f, name, year], dtype=object)>>> df.indexIndex([no1, no2, no3, no4], dtype=object)
3.对象属性
3.1查找索引
查找某个值在数组中的索引,类似于 Python 内建的 list.index(value) 方法。可以通过布尔索引来实现。比如我们想在一个 Series 中寻找到 ‘f’:>>> from pandas import Series,DataFrame>>> import pandas as pd>>> s=Series(list('I am fcq~'))>>> s0 I1 2 a3 m4 5 f6 c7 q8 ~dtype: object>>> s[s='f']SyntaxError: invalid syntax>>> s[s=='f']5 fdtype: object
3.2重新索引
Series 对象的重新索引通过reindex(index=None,**kwargs) 方法实现。**kwargs 中常用的参数有:method=None,fill_value=np.NaN:
>>> s2=Series([88,99,89,90],index=['ENG','CHE','PHY','CPT'])>>> a=['ENG','CPT','CHE','PHY','MATH']>>> s2.reindex(a)ENG 88CPT 90CHE 99PHY 89MATH NaNdtype: float64>>> s2.reindex(a,fill_value=0)ENG 88CPT 90CHE 99PHY 89MATH 0dtype: int64
3.3排序和排名
Series 的 sort_index(ascending=True) 方法可以对 index 进行排序操作,ascending 参数用于控制升序或降序,默认为升序。若要按值对 Series 进行排序,当使用 .order(na_last=True, ascending=True, kind='mergesort')方法,任何缺失值默认都会被放到 Series 的末尾。在 DataFrame 上,.sort_index(axis=0, by=None, ascending=True) 方法多了一个轴向的选择参数与一个 by 参数,by 参数的作用是针对某一(些)列进行排序(不能对行使用 by 参数):
>>> s2.sort_index(ascending=True)CHE 99CPT 90ENG 88PHY 89dtype: int64排名(Series.rank(method='average', ascending=True))的作用与排序的不同之处在于,他会把对象的 values 替换成名次(从 1 到 n)。这时唯一的问题在于如何处理平级项,方法里的 method 参数就是起这个作用的,他有四个值可选:average, min, max, first。
>>> s3=Series([3,2,0,3],index=list('abcd'))>>> s3a 3b 2c 0d 3dtype: int64>>> s3.rank()a 3.5b 2.0c 1.0d 3.5dtype: float64>>> s3.rank(method='max')a 4b 2c 1d 4dtype: float64>>> s3.rank(method='min')a 3b 2c 1d 3dtype: float64>>> s3.rank(method='first')a 3b 2c 1d 4dtype: float64
3.4统计方法
>>> data = {'state':['Ohino','Ohino','Ohino','Nevada','Nevada'], 'year':[2000,2001,2002,2001,2002], 'pop':[1.5,1.7,3.6,2.4,2.9]}>>> df=DataFrame(data)>>> df pop state year0 1.5 Ohino 20001 1.7 Ohino 20012 3.6 Ohino 20023 2.4 Nevada 20014 2.9 Nevada 2002>>> df.mean()pop 2.42year 2001.20dtype: float64>>> df.mean(axis=1)0 1000.751 1001.352 1002.803 1001.704 1002.45dtype: float64其他常用的统计方法有: count非 NA 值的数量describe针对 Series 或 DF 的列计算汇总统计min , max最小值和最大值argmin , argmax最小值和最大值的索引位置(整数)idxmin , idxmax最小值和最大值的索引值quantile样本分位数(0 到 1)sum求和mean均值median中位数mad根据均值计算平均绝对离差var方差std标准差skew样本值的偏度(三阶矩)kurt样本值的峰度(四阶矩)cumsum样本值的累计和cummin , cummax样本值的累计最大值和累计最小值cumprod样本值的累计积diff计算一阶差分(对时间序列很有用)pct_change计算百分数变化
参考:
http://www.open-open.com/lib/view/open1402477162868.html
https://my.oschina.net/lionets/blog/277847
http://www.cnblogs.com/skying555/p/5914391.html
http://www.cnblogs.com/skying555/p/5914391.html
- python数据分析之(3)pandas
- Python数据分析之pandas学习(11/3)
- Python数据分析之pandas学习(一)
- Python数据分析之pandas学习(二)
- (转载)Python数据分析之pandas学习
- 利用Python进行数据分析(五)之pandas入门
- 利用Python进行数据分析(六)之pandas基本功能
- Python数据分析之pandas学习
- python数据分析之pandas包
- Python数据分析之pandas基础
- Python数据分析之pandas统计分析
- Python数据分析之pandas学习
- Python数据分析之pandas学习
- Python数据分析之pandas ,part1
- Python数据分析之pandas学习
- python数据分析---Pandas
- Python 数据分析 pandas
- python基础数据分析--pandas(一)
- PS软件中最两个重难点
- 问题二十九:测试ray tracing中camera几个主要参数
- day19 IO-2 包装流 标准输入输出流 打印流 Properties 对象流和序列化
- 在Tomcat配置JNDI数据源的三种方式
- 402. Remove K Digits
- python数据分析之(3)pandas
- Android屏幕适配解决方案
- SMT32通过I2C和EP4C通信的问题
- ubuntu grub rescue
- h5游戏之js图形封装使用04(完结)
- BurpSuite系列(四)----Scanner模块(漏洞扫描)
- Spark 2.0的SparkSession详解
- 函数的复用
- 2016年总结