导图社区 数据访问思维导图
这是一篇关于数据访问的思维导图,介绍了索引、loc、isin、query、where等内容,结构型知识框架方便学习理解!
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
数据访问
索引
series:既可以用标签也可以用数字索引访问单个元素,还可以用相应的切片访问多个值,因为只有一维信息。
seriesname[index]
dataframe:无法访问单个元素,只能返回一列、多列或多行:单值或多值(多个列名组成的列表)访问时按列进行查询,单值访问不存在列名歧义时还可直接用属性符号" . "访问。切片形式访问时按行进行查询,输入数字索引切片时,类似于普通列表切片,访问单列时可以进行直接赋值。
df["姓名"] 或 df.姓名 :访问单列
df[["姓名","语文"]] :访问多列
df[df.分数>80] :单条件访问行
df[~(df.分数>80)] :单条件非满足访问行
df[(df.姓名 == '王狗蛋') & (df.分数 > 80)] :多条件交集访问行
df[(df.姓名 == '王狗蛋') | (df.分数 > 80)] :多条件并集访问行
df[1:6] :访问连续多行访问
df.a=[1,2,3,4,5]:对a列进行赋值
可以通过索引直接添加新数据
loc/iloc
loc:是根据的具体标签名选取列行
df.loc[行名,列名] :访问单个元素
df.loc[行名] :单行访问
df.loc[[行名,行名]] :多行访问
df.loc[1:9] :访问连续多行
df.loc[行名][[列名,列名]] :访问某一行或多行的多列
iloc:是根据标签所在的位置,从0开始计数。支持负数序列号
df.iloc[1:3,2:3] :连续多行的连续多列访问
df.iloc[1:,4:]
iloc只能选取数据表里实际有的行和列,而.loc可以选取没有的行和列。
isin
isin :直接根据条件进行索引,接受一个列表,判断该列中元素是否在列表中
df.姓名.isin(["王狗蛋"]) :返回一个由布尔数据构成的seriesisin讲解完后,大家考虑下怎么用isin选取特定条件的行。
df[df.姓名.isin(['王狗蛋']) | df.分数.isin([65])] :多条件进行索引,用&(交集)或者|(并集)进行连接
df[df.isin({"姓名":['王狗蛋','赵狗剩'],"分数":[80,65]})]:通过字典的形式传递多条件并集索引{‘某列’:[条件],‘某列’:[条件],}
df[~df.姓名.isin(["赵狗剩","张二狗"])]:满足非条件查询
作业
1.获取表格中有那些同学的分数语文分数高于70。2.获取表格中所有同学的英语分数。3.将表格中所有不高于60的分数改为待努力。
where()
where(cond, other=nan, inplace=False):如果 cond 为真,保持原来的值,将不满足匹配条件的结果赋值为NaN或other,可用于筛选或屏蔽值, inplace为真标识在原数据上操作,为False标识在原数据的copy上操作。mask与where刚好相反
df.where(df.分数 < 80,"牛逼"):高于80的改为牛逼
query()
query(expr,inplace = False)按列进行数据查询expr为真时显示,inplace为TRUE为在元数据上操作。expr为文本。在处理数据量>1W条时,所占内存更低处理效率显著提高
df.query("分数 > 60"):单条件索引
df.query("分数 > 60 & 姓名 == '王狗蛋'"):多条件索引,当条件为文本是需要单独加引号,&与and |与or 效果是相同的
a = 80df.query("@a > 分数 > 60") : 在由变量时须在变量名前加@