删除:

  del df["A"]  # 原地修改

  df.drop("a")  # 返回修改后的新对象

  df.drop(["a", "b", "c"])

修改:

增加,修改:

  df["ps"] = 1   # 可以通过标量或者数组进行列赋值,如果是通过列表或者数组进行赋值,长度必须与df长度一致,如果通过series赋值,索引会精确匹配,没有的会补NAN

创建:

  通过传入字典或者列表进行创建。

属性:

  index,columns,values

  index: 行索引

  columns: 列索引 df.columns.tolist()

  行索引和列索引都可以通过drop进行删除,drop可以接受axis参数。

重新索引:

  reindex, df.reindex(["a", "b", "c", "d", "e"], fill_value=0)

axis:

  就是0轴匹配的是index, 涉及上下运算;1轴匹配的是columns, 涉及左右运算,此条来自知乎

获取数据:

  df["A"], df[["A", "B"]]  # 获取列

  df[:2], df[df['A'] > 1]  # 获取行

  df[df<5]  # 通过布尔型df  df[<5]进行选取,范围是整个df

索引字段:

   ix, df.ix[row1: row3][col1: col9]

  df.ix[:][val]  # 选取列

  df.ix[rows][cols]  # 选取行列

获取df大小:

  df.shape  # 返回行和列的维数

索引操作:

  df.set_index([col], drop=False)  # 列设置为索引

  df.reset_index()  # 层次化索引转移到列

支持的算数运算: add, sub, mul, div

相加:

  df1 + df2 按照索引把两个df的值相加,无交集的地方填充NAN

  df1.add(df2, fill_value=0)  无交集的地方填充0

合并:

  merge

    pd.merge(df1, df2, how="inner", on="key")  #  按照某一列将两个df合并,how关键字参数决定是进行交集还是并集,按照左侧df合并还是右侧df合并,默认是交集。

    注意:add是按照index将两个df对应列的值相加,merge是按照列合并两个df,结果的值是用于合并的两个df中的一个值,key重复的值只保留一个,并没有进行算数运算。

    如果merge需要按照index可以传入参数left_index=True, right_index=True, pd.merge(df1, df2, left_index=True, right_index=True)

  concat

    拼接两个df,保留两个df的值

    pd.concat([df, df1], axis=0)  # 按行拼接

    pd.concat([df, df1], axis=1, keys=[1, 2])  # 按列拼接

相减:

  df - series会广播,将series匹配到df的列,然后沿着列一直向下广播。

应用函数:

  np.abs(df), df.apply(function)

排序:

  对行或者索引进行排序:

    df.sort_index(), df.sort_index(by=['a','b'],axis=1, ascending=False)

  对series值排序,series.order()

  DataFrame按列排序:

    df.sort_values([col], ascending=True)  # default is ascending = True

数据处理:

  df允许索引重复。df.append()之后groupby可以解决两个df之间索引重复,需要按照某一列groupby的问题。

  pd.concate([df1, df2], ignore_index=True)   # 拼接两个df,忽略索引,直接避免了重复索引。

  df1.combine_first(df2)  # 使用df2中的数据为df1中的数据打补丁。

  df.sum()  # 按列运算, df.mean()

  df.sum(axis=1)  # 左右, df.mean(axis=1)

  df.idxmax(), df.idxmin()  # 返回达到最小或者最大值的索引

  series使用unique()获取唯一值, df[1].unique()

  series可以使用value_counts()对元素进行计数, df["C"].value_counts(),返回结果按照降频排列。

  isin表示一个series的各个值是否在另一个series。

  NAN值处理:dropna,fillna,isnull,notnull

数据选择:

  loc for label based indexing or  通过行标签(index)索引行数据,df.loc[“a”]表示选择index为a的那行数据
  iloc for positional indexing 通过行号获取行数据df.iloc[1]获取第一行数据

  ix 结合前两种的混合索引

    df.ix[1] # 通过行号获取数据   

    df.ix['e']  # 通过行标签获取数据

pandas读取关系数据库数据:

  import pandas.io.sql as sql

  sql.read_frame("select * from <table>", con)  # con is the connection of database

  pandas dataframe转list:首先使用np.array()函数把DataFrame转化为np.ndarray(),再利用tolist()函数把np.ndarray()转为list

数据转换:

  就地修改index:df.index = df.index.map(lambda x: int(x) + 1)

  重命名标签:

    df.rename(index={"1":"first"}, columns={"count": "quantity"})  # 通过字典实现一部分标签的重命名。

    df.rename(index=np.str, columns=str.upper)  # index转换为字符串,columns大写。

    这样会重新生成一个df,如果想要就地修改,传入inplace=True,df.rename(index={"1":"first"}, columns={"count": "quantity"}, inplace=True)

数据聚合:

  df.groupby("A").quantile(0.9)  # 求分位置数

  df.groupby("E").agg("Here could define you function")  # 传入任意函数

  df.groupby("A").sum()  # "A"列会被当做索引

  df.groupby("A", group_keys=False).apply(sum)  # group_keys用于在使用apply时确定是否将group key当做索引。使用False在最终结果中也会保留group key.

  df.groupby("a")["b"].sum()  # 按照“a”groupby之后,只对column b 进行sum()

数据对齐:

  df.align(df1, join="inner")

重采样:

  df.resample()

  频率转换和重对齐的两大工具是resample和reindex,resample用于使数据符合一个新的频率,reindex使数据符合一个新的索引。

判断DataFrame为空:

  df.empty

pandas 笔记的更多相关文章

  1. Pandas笔记目录

    速查笔记 使用实例 Pandas-数据导入 (未完成) Pandas-数据探索 基础属性 shape indexs columns values dtype/dtypes 汇总和计算描述统计 coun ...

  2. python--Numpy and Pandas 笔记01

    博客地址:http://www.cnblogs.com/yudanqu/ 1 import numpy as np import pandas as pd from pandas import Ser ...

  3. numpy&pandas笔记

    1.基础属性: array = np.array([[1,2,3],[2,3,4]]) #列表转化为矩阵 print('number of dim:',array.ndim) # 维度 # numbe ...

  4. pandas笔记

    axis = 1表示按列的方向遍历 axis = 0表示按行的方向遍历 Usually axis=0 is said to be "column-wise" (and axis=1 ...

  5. 【笔记3】用pandas实现矩阵数据格式的推荐算法 (基于用户的协同)

    原书作者使用字典dict实现推荐算法,并且惊叹于18行代码实现了向量的余弦夹角公式. 我用pandas实现相同的公式只要3行. 特别说明:本篇笔记是针对矩阵数据,下篇笔记是针对条目数据. ''' 基于 ...

  6. Pandas快速入门笔记

    我正以Python作为突破口,入门机器学习相关知识.出于机器学习实践过程中的需要,我快速了解了一下提供了类似关系型或标签型数据结构的Pandas的使用方法.下面记录相关学习笔记. 数据结构 Panda ...

  7. 数据分析之Pandas和Numpy学习笔记(持续更新)<1>

    pandas and numpy notebook        最近工作交接,整理电脑资料时看到了之前的基于Jupyter学习数据分析相关模块学习笔记.想着拿出来分享一下,可是Jupyter导出来h ...

  8. Pandas学习笔记

    本学习笔记来自于莫烦Python,原视频链接 一.Pandas基本介绍和使用 Series数据结构:索引在左,值在右 import pandas as pd import numpy as np s ...

  9. Pandas 学习笔记

    Pandas 学习笔记 pandas 由两部份组成,分别是 Series 和 DataFrame. Series 可以理解为"一维数组.列表.字典" DataFrame 可以理解为 ...

随机推荐

  1. MySQL数据库事务各隔离级别加锁情况--read committed && MVCC(转载)

    http://www.imooc.com/article/17290 http://www.51testing.com/html/38/n-3720638.html https://dev.mysql ...

  2. tar -zxvf中的z是个什么鬼

    习惯了tar -czvf和tar -zxvf.今天在本地用压缩软件7z打了一个tar包,在docker容器中用tar -zxvf怎么都解压不了,报错gzip: stdin: not in gzip f ...

  3. PHP——抽象类与接口的区别

    在学习PHP面向对象时,都会在抽象类与接口上迷惑,作用差不多为什么还那么容易混淆,何不留一去一?但是事实上两者的区别还是很大的,如果能够很好地运用PHP的两个方法,面向对象的程序设计将会更加合理.清晰 ...

  4. Linux上面的MTU含义

    问题场景描述: 最近在搞一个很菜的程序--FTP上传文件. 但是这个 很菜的程序搞的我脑袋疼了 半个月. 在linux上面部署了我的程序,上传文件在1KB以下顺利上传,但是1KB以上上传不上去. 程序 ...

  5. Mybatis 系列8-结合源码解析select、resultMap的用法

    [Mybatis 系列10-结合源码解析mybatis 执行流程] [Mybatis 系列9-强大的动态sql 语句] [Mybatis 系列8-结合源码解析select.resultMap的用法] ...

  6. Docker使用札记 - Dockerfile指令

    ARG ARG跟ENV都可以定义变量,不同在于ARG在构建期结束时是销毁,而ENV定义的是系统中的环境变量,不会在构建结束时销毁,在以后的构建中直接使用. 当ARG和ENV定义相同名称的变量时,ENV ...

  7. 【Selenium-WebDriver问题点】chromeDriver和chrome浏览器版本之间的兼容性问题

    今天早晨因为测试需求,将chrome浏览器更新到最新的65版本,结果之前用的chromeDriver测试计划,都跑不通过了, 所以就在网上找了下,mark下. 最新的chromedriver与chro ...

  8. ubantu 黑屏

    解决:ubuntu16.04启动时长时间停留在紫屏或跳文本的黑屏界面 - HuangJC 显卡驱动问题,显卡驱动问题,显卡驱动问题.重要的事说三遍.(也许还有其他问题) 解决办法: 1.在引导界面按E ...

  9. openStack queens

  10. 【Social Listening实战】当数据分析遭遇心理动力学:用户深层次的情感需求浮出水面

    本文转自知乎 作者:苏格兰折耳喵 ----------------------------------------------------- 本文篇幅较长,分为五部分,在中间部分有关于心理分析工具的介 ...