专栏名称: 数据分析与开发
伯乐在线旗下账号,分享数据库相关技术文章、教程和工具,另外还包括数据库相关的工作。偶尔也谈谈程序员人生 :)
目录
相关文章推荐
数据中心运维管理  ·  讲一讲开关电源并联均流技术…… ·  昨天  
数据中心运维管理  ·  如何有效处理数据中心停机 ·  昨天  
数据中心运维管理  ·  突发!又一储能电站发生火灾 ·  4 天前  
数据中心运维管理  ·  如何为布线环境选择合适的网络电缆标签 ·  2 天前  
AustinDatabases  ·  MongoDB ... ·  2 天前  
51好读  ›  专栏  ›  数据分析与开发

Pandas50 个高级操作,秀起来!

数据分析与开发  · 公众号  · 数据库  · 2023-06-08 12:10

正文

请到「今天看啥」查看全文


# dtype('int32') df.astype({'Q1': 'int32','Q2':'int32'}).dtypes


4、转为时间类型


t = pd.Series(['20200801', '20200802'])


03、数据排序


数据排序是指按一定的顺序将数据重新排列,帮助使用者发现数据的变化趋势,同时提供一定的业务线索,还具有对数据纠错、分类等作用。


1、索引排序df.sort_index()


s.sort_index() # 升序排列df.sort_index() # df也是按索引进行排序df.team.sort_index()s.sort_index(ascending=False)# 降序排列s.sort_index(inplace=True) # 排序后生效,改变原数据# 索引重新0-(n-1)排,很有用,可以得到它的排序号s.sort_index(ignore_index=True)s.sort_index(na_position='first') # 空值在前,另'last'表示空值在后s.sort_index(level=1) # 如果多层,排一级s.sort_index(level=1, sort_remaining=False) #这层不排# 行索引排序,表头排序
df.sort_index(axis=1) # 会把列按列名顺序排列


2、数值排序sort_values()


df.Q1.sort_values()df.sort_values('Q4')df.sort_values(by=['team', 'name'],ascending=[True, False])


其他方法:


s.sort_values(ascending=False) # 降序s.sort_values(inplace=True) # 修改生效s.sort_values(na_position='first') # 空值在前# df按指定字段排列df.sort_values(by=['team'])df.sort_values('Q1')# 按多个字段,先排team,在同team内再看Q1df.sort_values(by=['team', 'Q1'])# 全降序df.sort_values(by=['team', 'Q1'], ascending=False)# 对应指定team升Q1降df.sort_values(by=['team', 'Q1'],ascending=[True, False])# 索引重新0-(n-1)排df.sort_values('team', ignore_index=True)


3、混合排序


df.set_index('name', inplace=True) # 设置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'])


04、添加修改


数据的修改、增加和删除在数据整理过程中时常发生。修改的情况一般是修改错误、格式转换,数据的类型修改等。


1、修改数值


df.iloc[0,0] # 查询值# 'Liver'df.iloc[0,0] = 'Lily' # 修改值df.iloc[0,0] # 查看结果# 'Lily'
# 将小于60分的成绩修改为60df[df.Q1 < 60] = 60# 查看df.Q1
# 生成一个长度为100的列表v = [1, 3, 5, 7, 9] * 20


2、替换数据


s.replace(0, 5) # 将列数据中的0换为5df.replace(0, 5) # 将数据中的所有0换为5df.replace([0, 1, 2, 3], 4) # 将0~3全换成4df.replace([0, 1, 2, 3], [4, 3, 2, 1]) # 对应修改s.replace([1, 2], method='bfill') # 向下填充df.replace({0: 10, 1: 100}) # 字典对应修改df.replace({'Q1': 0, 'Q2': 5}, 100) # 将指定字段的指定值修改为100df.replace({'Q1': {0: 100, 4: 400}}) # 将指定列里的指定值替换为另一个指定的值

3、填充空值


df.fillna(0) # 将空值全修改为0# {'backfill', 'bfill', 'pad', 'ffill',None}, 默认为Nonedf.fillna(method='ffill') # 将空值都修改为其前一个值values = {'A': 0, 'B': 1, 'C': 2, 'D': 3}df.fillna(value=values) # 为各列填充不同的值df.fillna(value=values, limit=1) # 只替换第一个


4、修改索引名


df.rename(columns={'team':'class'})


常用方法如下:


df.rename(columns={"Q1":"a", "Q2": "b"}) # 对表头进行修改






请到「今天看啥」查看全文