pandas的数据结构  
  • Series是一种类似于一维数组的对象,它由一组数据(各种Numpy数据类型)以及一组与之相关的数据标签(即索引)组成。由一组数据即可产生最简单的Series。
Series的字符串表现形式为:索引在左边,值在右边。自动创建一个0~N-1的整数型索引,可以通过values和index属性获取其数组表示形式和索引对象。(可以传递给它的参数一维数组array或者列表   Series最重要的一个功能是:它在算术运算中会自动对齐不同索引的数据 a=Series([1,2,3],index = ['one','two','three']) Pandas数据结构基础 随笔 第1张 Pandas数据结构基础 随笔 第2张 obj = Series(np.arange(5.),index = ['a','b','c','d','e']) Pandas数据结构基础 随笔 第3张 Pandas数据结构基础 随笔 第4张 Pandas数据结构基础 随笔 第5张 Pandas数据结构基础 随笔 第6张 Pandas数据结构基础 随笔 第7张 Pandas数据结构基础 随笔 第8张 obj.values查看元素 obj.index查看索引 赋值:选取索引 obj['a']=20 #新增列也是这样   ser.dropna()#过滤NaN ser[ser.notnull()]
  • DataFrame是一个表格型的数据结构(传入的参数一般为字典/列表),含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。
    axis = 0/1 0是列,1是行       index是行  columns是列    data是一个dataframe类型   data['one'] 获取列   DataFrame的一列就是Series  
  • 索引对象index
index的方法和属性: append # 连接另一个index对象,产生一个新的index diff # 计算差集,并得到一个index intersection # 计算交集 union # 计算并集 isin # 计算一个指示各值是否都包含在参数集合中的布尔型数组 delete # 删除索引i处的元素,并得到一个新的index drop # 删除传入的值,并得到新的index insert # 将元素插入到索引i处,并得到新的index dropna(how='all')删除NaN 利用fillna()方法填充缺失数据可以看做值替换的一种特殊情况,虽然map可以修改对象的数据子集,但replace提供了一种跟简单、更灵活的方式。   data.replace(a,'b') data.replace(['a','c'],'b') data.replace(['a','c'],['b','d']) is_monotonic # 当各元素均大于等于前一个元素时,返回True is_unique # 当index没有重复值时,返回True unique # 计算index中唯一值得数组 value_counts()#返回各个不同的元素及出现的次数 dataframe.ix[index]#行索引 dataframe.columns.name='item' #命名 dataframe.index.name = 'id' reindex()#重新定义索引(行或者列皆可) Pandas数据结构基础 随笔 第9张 Pandas数据结构基础 随笔 第10张 Series有一个应用于元素级函数的map方法。     ?????????? frame['e'].map(format) index对象 ser =pd.Series([5, 0, 3, 8, 4],index = ['red', 'blue', 'yellow', 'white', 'green']) In [166]: ser                                                                     Out[166]: red       5 blue      0 yellow    3 white     8 green     4 dtype: int64 In [167]: ser.idxmin()         #idxmax()                                                     Out[167]: 'blue' #排序: frame.sort_index()  frame.sort_idnex(axis = 1) #根据任意轴上的索引就行排序 frame.sort_index(axis = 1,ascending = False) #数据默认是按升序排序的,也可设置降序排序。 axis * 使用0值表示沿着每一列或行标签\索引值向下执行方法 * 使用1值表示沿着每一行或者列标签模向执行对应的方法   Pandas数据结构基础 随笔 第11张 Pandas数据结构基础 随笔 第12张 def f(s):       return x.max() -x.min() dataframe.apply(f)   dataframe.describle()#计算多个统计量 排序: dateframe.sort_index() Series.order()#注意区别

DataFrame索引上的合并mergehttps://blog.csdn.net/weixin_37226516/article/details/64137043

pandas.merge可根据一个或多个键将不同DataFrame中的行连接起来 数据集的合并(merge)或连接(join)运算是通过一个或多个键将行链接起来的 默认情况下,merge做的是“inner”连接 Pandas数据结构基础 随笔 第13张 Pandas数据结构基础 随笔 第14张 merge函数的参数: 默认以重叠的列名当做连接键。inner取交集 Pandas数据结构基础 随笔 第15张 Pandas数据结构基础 随笔 第16张 ① left # 用于合并的左侧DataFrame Pandas数据结构基础 随笔 第17张 Pandas数据结构基础 随笔 第18张 Pandas数据结构基础 随笔 第19张 Pandas数据结构基础 随笔 第20张 ② right # 用于合并的右侧DataFrame Pandas数据结构基础 随笔 第21张 Pandas数据结构基础 随笔 第22张 Pandas数据结构基础 随笔 第23张 Pandas数据结构基础 随笔 第24张 ③ how # “inner”、“outer”、“left”、‘“right”其中之一,默认为“inner” ④ on # 用于连接的列名 ⑤ left_on、tight_on # 左右侧DataFrame分别指定键 ⑥ left_index、right_index # 左右侧将索引用作连接键 ⑦ sort# 合并后进行排序,默认为True,处理大数据时,最好禁用 ⑧ suffixes # 字符串元组,用于追加到重叠列名的结尾,默认为“_x”、“_y” ⑨ copy # 默认为Flase,可以在某种特殊情况下禁用,默认总是复制。 left_index/ right_index: 如果是True的haunted以index作为对齐的key sort:根据dataframe合并的keys按字典顺序排序,默认是,如果置false可以提高表现。

v0.17.0 版本的pandas开始还支持一个indicator的参数,如果置True的时候,输出结果会增加一列 ’ _merge’。_merge列可以取三个值

left_only 只在左表中 right_only 只在右表中 both 两个表中都有 Pandas数据结构基础 随笔 第25张 Pandas数据结构基础 随笔 第26张

join方法

dataframe内置的join方法是一种快速合并的方法。它默认以index作为对齐的列。  

suffix后缀参数

如果和表合并的过程中遇到有一列两个表都同名,但是值不同,合并的时候又都想保留下来,就可以用suffixes给每个表的重复列名增加后缀。suffixes=['', ' old']) Pandas数据结构基础 随笔 第27张 Pandas数据结构基础 随笔 第28张 Pandas数据结构基础 随笔 第29张 Pandas数据结构基础 随笔 第30张 frame1与frame2的列名不能有重合 concatenation数组的拼接 Pandas数据结构基础 随笔 第31张 Pandas数据结构基础 随笔 第32张 concat()按轴拼接 Pandas数据结构基础 随笔 第33张 Pandas数据结构基础 随笔 第34张 Pandas数据结构基础 随笔 第35张 Pandas数据结构基础 随笔 第36张 Pandas数据结构基础 随笔 第37张 Pandas数据结构基础 随笔 第38张创建等级索引 Pandas数据结构基础 随笔 第39张 Pandas数据结构基础 随笔 第40张 Pandas数据结构基础 随笔 第41张 Pandas数据结构基础 随笔 第42张 轴向旋转stack() 列转为行 Pandas数据结构基础 随笔 第43张 Pandas数据结构基础 随笔 第44张 Pandas数据结构基础 随笔 第45张 Pandas数据结构基础 随笔 第46张 Pandas数据结构基础 随笔 第47张 Pandas数据结构基础 随笔 第48张 Pandas数据结构基础 随笔 第49张 Pandas数据结构基础 随笔 第50张 映射 Pandas数据结构基础 随笔 第51张 Pandas数据结构基础 随笔 第52张 Pandas数据结构基础 随笔 第53张 Pandas数据结构基础 随笔 第54张 Pandas数据结构基础 随笔 第55张 Pandas数据结构基础 随笔 第56张 map() Pandas数据结构基础 随笔 第57张 Pandas数据结构基础 随笔 第58张 rename() Pandas数据结构基础 随笔 第59张 Pandas数据结构基础 随笔 第60张 Pandas数据结构基础 随笔 第61张 Pandas数据结构基础 随笔 第62张reindex, recolum必须是字典 Pandas数据结构基础 随笔 第63张 Pandas数据结构基础 随笔 第64张inplace split('')#以参考点为分隔符。将文本分为几部分   GroupBy对象支持迭代,可以产生一组二元元组(由分组名和数据块组成)groupby默认是在axis = 0上(列)进行分组的   Pandas数据结构基础 随笔 第65张 Pandas数据结构基础 随笔 第66张 Pandas数据结构基础 随笔 第67张 Pandas数据结构基础 随笔 第68张 df1=df.groupby('key1')                                                   In [11]: df1                                                                      Out[11]: <pandas.core.groupby.generic.DataFrameGroupBy object at 0x7f912bf79518> 变量df1是一个GroupBy对象,它实际上还没有进行任何计算,只是含有一些有关分组键df['key1']的中间数据而已,然后我们可以调用GroupBy的mean等方法来计算分组平均值:   dataframe.groupby('A').mean()   按A列进行分组 获取其他列的均值 dataframe.agg() 对不同的列采用不同的聚合方法(函数) data.agg({'B':'mean','C':'sum'})    #B列均值,C列汇总   高级数据聚合transform   apply *如果按照A进行分组后,对多列采用相同的聚合方法( 对DataFrame的多个列同时进行运算),我们可以借助apply函数:(将函数的返回结果组合起来) dataframe.groupby('A').apply(np.mean)  apply将函数应用到由各列或行形成的一维数组上--------对应pd.Series,Series是一维标记的数组,能够保存任何数据类型(整数,字符串,浮点数,Python对象等)    

1.transform  传入的函数只能返回两种结果,可以广播的标量值或者与分组大小相同的结果数组。

例子:对分组求均值,然后把这个均值赋值给整个组(可广播的标量值)

Pandas数据结构基础 随笔 第69张 Pandas数据结构基础 随笔 第70张 pandas 读CSV文件 1.read_csv(filename) read_csv(filename,header=None)#默认添加表头 read_csv(filename, name=)#指定表头 2.read_table(filename, sep=)    astype astype(str) #数据类型转换   Pandas数据结构基础 随笔 第71张 Pandas数据结构基础 随笔 第72张 Pandas数据结构基础 随笔 第73张 Pandas数据结构基础 随笔 第74张 DataFrame.to_dict(orient='dict') 将DataFrame格式的数据转化成字典形式 参数:当然参数orient可以是字符串{'dict', 'list', 'series', 'split', 'records', 'index'}中的任意一种来决定字典中值的类型 字典dict(默认):类似于{列:{索引:值}}这样格式的字典 列表list:类似于{列:[值]}这种形式的字典 序列series:类似于{列:序列(值)}这种形式的字典 分解split:类似于{索引:[索引],列:[列],数据:[值]}这种形式的字典 记录records:类似于[{列:值},...,{列:值}]这种形式的列表 索引index:类似于{索引:{列:值}}这种形式的字典 在新版本0.17.0中,允许缩写,s表示序列,sp表示分裂 返回:结果:像{列:{索引:值}}这种形式的字典    
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄