天津黑曼巴网站建设,网页设计尺寸分辨率,传奇页游什么好玩,成都网站建设电话咨询在数据分析和数据建模的过程中需要对数据进行清洗和整理等工作#xff0c;有时需要对数据增删字段。下面为大家介绍Pandas对数据的复杂查询、数据类型转换、数据排序的使用。 复杂查询
实际业务需求往往需要按照一定的条件甚至复杂的组合条件来查询数据,接下来为大家介绍如何…在数据分析和数据建模的过程中需要对数据进行清洗和整理等工作有时需要对数据增删字段。下面为大家介绍Pandas对数据的复杂查询、数据类型转换、数据排序的使用。 复杂查询
实际业务需求往往需要按照一定的条件甚至复杂的组合条件来查询数据,接下来为大家介绍如何发挥Pandas数据筛选的无限可能随心所欲地取用数据。
1、逻辑运算
# Q1成绩大于36
df.Q1 36
# Q1成绩不小于60分并且是C组成员
~(df.Q1 60) (df[team] C) 2、逻辑筛选数据
切片[ ]、.loc[ ]和.iloc[ ]均支持上文所介绍的逻辑表达式。
以下是切片[ ]的逻辑筛选示例
df[df[Q1] 8] # Q1等于8
df[~(df[Q1] 8)] # 不等于8
df[df.name Ben] # 姓名为Ben
df[df.Q1 df.Q2] 以下是.loc[ ]和.lic[ ]示例
# 表达式与切片一致
df.loc[df[Q1] 90, Q1:] # Q1大于90只显示Q1
df.loc[(df.Q1 80) (df.Q2 15)] # and关系
df.loc[(df.Q1 90) | (df.Q2 90)] # or关系
df.loc[df[Q1] 8] # 等于8
df.loc[df.Q1 8] # 等于8
df.loc[df[Q1] 90, Q1:] # Q1大于90显示Q1及其后所有列3、函数筛选
# 查询最大索引的值
df.Q1[lambdas: max(s.index)] # 值为21
# 计算最大值
max(df.Q1.index)
# 99
df.Q1[df.index99]4、比较函数
# 以下相当于 df[df.Q1 60]
df[df.Q1.eq(60)]
df.ne() # 不等于 !
df.le() # 小于等于
df.lt() # 小于
df.ge() # 大于等于
df.gt() # 大于 5、查询df.query()
df.query(Q1 Q2 90) # 直接写类型SQL where语句还支持使用符引入变量
# 支持传入变量如大于平均分40分的
a df.Q1.mean()
df.query(Q1 a40)
df.query(Q1 Q2a)df.eval()与df.query()类似也可以用于表达式筛选。
# df.eval()用法与df.query类似
df[df.eval(Q1 90 Q3 10)]
df[df.eval(Q1 Q2a)]6、筛选df.filter()
df.filter(items[Q1, Q2]) # 选择两列
df.filter(regexQ, axis1) # 列名包含Q的列
df.filter(regexe$, axis1) # 以e结尾的列
df.filter(regex1$, axis0) # 正则索引名以1结尾
df.filter(like2, axis0) # 索引中有2的
# 索引中以2开头、列名有Q的
df.filter(regex^2,axis0).filter(likeQ, axis1)7、按数据类型查询
df.select_dtypes(include[float64]) # 选择float64型数据
df.select_dtypes(includebool)
df.select_dtypes(include[number]) # 只取数字型
df.select_dtypes(exclude[int]) # 排除int类型
df.select_dtypes(exclude[datetime64])数据类型转换
在开始数据分析前我们需要为数据分配好合适的类型这样才能够高效地处理数据。不同的数据类型适用于不同的处理方法。
# 对所有字段指定统一类型
df pd.DataFrame(data, dtypefloat32)
# 对每个字段分别指定
df pd.read_excel(data, dtype{team:string, Q1: int32})1、推断类型
# 自动转换合适的数据类型
df.infer_objects() # 推断后的DataFrame
df.infer_objects().dtypes2、指定类型
# 按大体类型推定
m [1, 2, 3]
s pd.to_numeric(s) # 转成数字
pd.to_datetime(m) # 转成时间
pd.to_timedelta(m) # 转成时间差
pd.to_datetime(m, errorscoerce) # 错误处理
pd.to_numeric(m, errorsignore)
pd.to_numeric(m errorscoerce).fillna(0) # 兜底填充
pd.to_datetime(df[[year, month, day]])
# 组合成日期3、类型转换astype()
df.Q1.astype(int32).dtypes
# dtype(int32)
df.astype({Q1: int32,Q2:int32}).dtypes4、转为时间类型 t pd.Series([20200801, 20200802])
数据排序
数据排序是指按一定的顺序将数据重新排列帮助使用者发现数据的变化趋势同时提供一定的业务线索还具有对数据纠错、分类等作用。
1、索引排序df.sort_index()
s.sort_index() # 升序排列
df.sort_index() # df也是按索引进行排序
df.team.sort_index()s.sort_index(ascendingFalse)# 降序排列
s.sort_index(inplaceTrue) # 排序后生效改变原数据
# 索引重新0-(n-1)排很有用可以得到它的排序号
s.sort_index(ignore_indexTrue)
s.sort_index(na_positionfirst) # 空值在前另last表示空值在后
s.sort_index(level1) # 如果多层排一级
s.sort_index(level1, sort_remainingFalse) #这层不排
# 行索引排序表头排序
df.sort_index(axis1) # 会把列按列名顺序排列2、数值排序sort_values()
df.Q1.sort_values()
df.sort_values(Q4)
df.sort_values(by[team, name],ascending[True, False])其他方法
s.sort_values(ascendingFalse) # 降序
s.sort_values(inplaceTrue) # 修改生效
s.sort_values(na_positionfirst) # 空值在前
# df按指定字段排列
df.sort_values(by[team])
df.sort_values(Q1)
# 按多个字段先排team在同team内再看Q1
df.sort_values(by[team, Q1])
# 全降序
df.sort_values(by[team, Q1], ascendingFalse)
# 对应指定team升Q1降
df.sort_values(by[team, Q1],ascending[True, False])
# 索引重新0-(n-1)排
df.sort_values(team, ignore_indexTrue)3、混合排序
df.set_index(name, inplaceTrue) # 设置name为索引
df.index.names [s_name] # 给索引起名
df.sort_values(by[s_name, team]) # 排序4、按值大小排序nsmallest()和nlargest()
s.nsmallest(3) # 最小的3个
s.nlargest(3) # 最大的3个
# 指定列
df.nlargest(3, Q1)
df.nlargest(5, [Q1, Q2])
df.nsmallest(5, [Q1, Q2])