pandas有两个数据结构:Series 和 DataFrame
Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及 一组与之相关的数据标签(即索引)组成。
Series的字符串表现形式为: 索引在左边,值在右边。.values返回值,.index返回索引值
obj = pd.Series([4, 7, -5, 3]) >> obj >0 4 1 7 2 -5 3 3 dtype: int64自定义数据点标记索引:
obj2 = pd.Series([4, 7, -5, 3], index=['d', 'b', 'a', ' c']) >> obj >d 4 b 7 a -5 c 3 dtype: int64pd.Series(arg,Index=None) 可直接把字典转换成Series。可通过一个拍好顺序的键值列表,改变字典转换成Series后的顺序。
sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000 , 'Utah': 5000} states = ['California', 'Ohio', 'Oregon', 'Texas'] obj4 = pd.Series(sdata, index=states) >> California NaN Ohio 35000.0 Oregon 16000.0 Texas 71000.0 dtype: float64在这个例子中,sdata中跟states索引相匹配的那3个值会被找出来并放到相应的位 置上,但由于"California"所对应的sdata值找不到,所以其结果就为NaN(即“非数 字”(not a number),在pandas中,它用于表示缺失或NA值)。因为‘Utah’不在 states中,它被从结果中除去。
pandas的isnull和notnull函数可用于检测缺失数据
Series最重要的一个功能是,它会根据运算的索引标签自动对齐数据Series对象本身及其索引都有一个name属性,该属性跟pandas其他的关键功能关 系非常密切:
DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值 类型(数值、字符串、布尔值等)。DataFrame既有行索引也有列索引,它可以被 看做由Series组成的字典(共用同一个索引)。DataFrame中的数据是以一个或多 个二维块存放的(而不是列表、字典或别的一维数据结构)。
创建DataFrame最常用的办法,直接传入一个由等长列表或Numpy数组组成的字典:结果DataFrame会自动加上索引(跟Series一样),且全部列会被有序排列: 对于特别大的DataFrame, head方法会选取前5行:
DataFrame指定列排列: 获取DataFrame数据中的一个Series。1.frame2[‘state’] 2. frame2.year
通过loc属性,返回DataFrame某一Series列可以通过赋值的方式进行修改。frame2[‘debt’] = 16.5. 如果赋值的是Series, 会精确匹配DataFrame的索引,所有的空位都将被填上空缺值。 为不存在的列赋值会创建出一个新列。关键字del用于删除列。嵌套的字典给DataFrame, pandas就会被解释为:外层字典的键作为列,内层键则作为行索引:
设置DataFrame的index 和 colomns的name属性,设置的DataFrame的index和coloumns的name也会被显示出来。
pandas的索引对象负责管理轴标签和其他元数据(比如轴名称等)。构建Series或 DataFrame时,所用到的任何数组或其他序列的标签都会被转换成一个Index。 index对象是不可变的,因此用户不能对其进行修改:
对于上面代码中,obj2的’e’,引入缺失值代替。
对于时间序列这类有序数据,重新索引时可能需要做一些插值处理。
drop方法,指定键删除指定行的Series, 传入drop(key, axis = ‘N’ )删除行的值
drop函数修改Series 或 DataFrame的大小或形状,不返回新的对象。切片与python方式相同,不过前后端都是包含的,也可通过切片获得某一列的内容。
用数字 或 值 索引,得到行 或 列数据。使用轴标签(loc) 或 整数索引(iloc),从 DataFrame选择行和列的子集。
pandas的整数索引与Python内置的列表和元组的索引语法不同。
如果轴索引含有整数,数据选取总会使用标签。为了更准确,请使 用loc(标签)或iloc(整数):arr1.add(arr2, fill_value=0),在没有交集的地方填充0值。
整个DataFrame取倒数,第一个方法是直接1 / df1 ,第二个方法是 arr1.rdiv(1)
直接相减 或者使用sub()函数
sort_index()方法, 返回一个已排序号的新对象。并可以传参选者任一轴进行排序。
排序时,任何缺失值默认都会被放到Series的末尾
使用sort_values的by选项:根据一个或多个列中的值进行排序: frame.sort_values(by=‘arg’)
rank函数:为各组分配一个平均排名的方法破坏平级关系
sum()函数返回一个含有一个列和行的Series, 并可传入参数axis选者按行求和还是列
describe()返回一次性产生多个汇总统计。unique()方法返回一个Series中的唯一值数组
value_counts 用于计算一个Series中各值出现的频率