pandas 笔记
删除:
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 笔记的更多相关文章
- Pandas笔记目录
速查笔记 使用实例 Pandas-数据导入 (未完成) Pandas-数据探索 基础属性 shape indexs columns values dtype/dtypes 汇总和计算描述统计 coun ...
- python--Numpy and Pandas 笔记01
博客地址:http://www.cnblogs.com/yudanqu/ 1 import numpy as np import pandas as pd from pandas import Ser ...
- numpy&pandas笔记
1.基础属性: array = np.array([[1,2,3],[2,3,4]]) #列表转化为矩阵 print('number of dim:',array.ndim) # 维度 # numbe ...
- pandas笔记
axis = 1表示按列的方向遍历 axis = 0表示按行的方向遍历 Usually axis=0 is said to be "column-wise" (and axis=1 ...
- 【笔记3】用pandas实现矩阵数据格式的推荐算法 (基于用户的协同)
原书作者使用字典dict实现推荐算法,并且惊叹于18行代码实现了向量的余弦夹角公式. 我用pandas实现相同的公式只要3行. 特别说明:本篇笔记是针对矩阵数据,下篇笔记是针对条目数据. ''' 基于 ...
- Pandas快速入门笔记
我正以Python作为突破口,入门机器学习相关知识.出于机器学习实践过程中的需要,我快速了解了一下提供了类似关系型或标签型数据结构的Pandas的使用方法.下面记录相关学习笔记. 数据结构 Panda ...
- 数据分析之Pandas和Numpy学习笔记(持续更新)<1>
pandas and numpy notebook 最近工作交接,整理电脑资料时看到了之前的基于Jupyter学习数据分析相关模块学习笔记.想着拿出来分享一下,可是Jupyter导出来h ...
- Pandas学习笔记
本学习笔记来自于莫烦Python,原视频链接 一.Pandas基本介绍和使用 Series数据结构:索引在左,值在右 import pandas as pd import numpy as np s ...
- Pandas 学习笔记
Pandas 学习笔记 pandas 由两部份组成,分别是 Series 和 DataFrame. Series 可以理解为"一维数组.列表.字典" DataFrame 可以理解为 ...
随机推荐
- MySQL · 引擎特性 · 基于InnoDB的物理复制实现(转载)
http://mysql.taobao.org/monthly/2016/05/01/ 在开始之前,你需要对InnoDB的事务系统有个基本的认识.如果您不了解,可以参考我之前的几篇关于InnoDB的文 ...
- MySQL数据库事务各隔离级别加锁情况--read committed && MVCC(转载)
http://www.imooc.com/article/17290 http://www.51testing.com/html/38/n-3720638.html https://dev.mysql ...
- 哈希表(Hash Table)原理及其实现
原理 介绍 哈希表(Hash table,也叫散列表), 是根据关键码值(Key value)而直接进行访问的数据结构.也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度.这个映 ...
- 从MediaStorehe和sd中删除媒体文件
参考资料:http://www.sandersdenardi.com/querying-and-removing-media-from-android-mediastore/ 从媒体表中删除: pri ...
- U3D学习11——nav导航和动画
一.nav导航 1.nav mesh agent 2.off mesh link 3.navigation面板-areas标签的应用,导航分层 二.动画 1.avatar可重用. 2.Animator ...
- 第7章 网络层协议(4)_IGMP协议
4. IGMP协议(Internet Group Management Protocol) 4.1 什么是组播(多播) (1)单播同一个视频要发送90个副本,但支持收看者“快进”和“倒退”. (2)组 ...
- Struts2访问web元素的各种方法
1.通过RequestAware,SessionAware,ApplicationAware获取: 在Struts2中不能直接访问Request,Session,Application元素,但是可以使 ...
- CVPR 2019 | 用异构卷积训练深度CNN:提升效率而不损准确度
对于深度卷积神经网络而言,准确度和计算成本往往难以得兼,研究界也一直在探索通过模型压缩或设计新型高效架构来解决这一问题.印度理工学院坎普尔分校的一篇 CVPR 论文则给出了一个新的思路——使用异构的卷 ...
- implementation compile的区别
implementation不可以依赖传递:依赖对app Module 是不可见的 compile可以依赖传递:依赖对app Module 是可见的 AndroidStudio升级到3.0以上后,第一 ...
- Build path specifies execution environment J2SE-1.5. There are no JREs installed in the workspace that are strictly compatible with this environment.
错误信息: Description Resource Path Location TypeBuild path specifies execution environment J2SE-1.5. Th ...