Pandas 50题练习
f行的age改为1.
df.loc['f', 'age'] = 1.5
这样比 df.loc['f']['age'] 好
计算df中每个种类animal的数量
df['animal'].value_counts()
我是 计算df中每个种类animal的数量
df.groupby('animal').count()
不好
将priority列中的yes, no替换为布尔值True, False
df['priority'] = df['priority'].map({'yes': True, 'no': False})
我的做法
df['priority'] = df['priority'].str.replace('no','false')
df['priority'] = df['priority'].str.replace('yes','true')
对每种animal的每种不同数量visits,计算平均age,即,返回一个表格,行是aniaml种类,列是visits数量,表格值是行动物种类列访客数量的平均年龄
df.pivot_table(index='animal', columns='visits', values='age', aggfunc='mean')
我的做法
res = df.groupby(by=['animal','visits'])['age'].mean() 这样是不行的
一个全数值DatraFrame,每个数字减去该行的平均数
df = pd.DataFrame(np.random.random(size=(, )))
print(df)
df1 = df.sub(df.mean(axis=), axis=)
print(df1)
我的做法
for i in range(len(df)):
for j in (df.columns):
df.loc[i,j] = df.loc[i,j] - df.loc[i].mean()
一个有5列的DataFrame,求哪一列的和最小
df = pd.DataFrame(np.random.random(size=(, )), columns=list('abcde'))
print(df)
df.sum().idxmin()
我的做法
df.sum().sort_values() 然后自己肉眼识别
给定DataFrame,求A列每个值的前3的B的值的和
df = pd.DataFrame({'A': list('aaabbcaabcccbbc'),
'B': [,,,,,,,,,,,,,,]})
print(df)
df1 = df.groupby('A')['B'].nlargest().sum(level=)
print(df1)
给定DataFrame,有列A, B,A的值在1-(含),对A列每10步长,求对应的B的和
df = pd.DataFrame({'A': [,,,,,,,,,],
'B': [,,,,,,,,,]})
print(df)
df1 = df.groupby(pd.cut(df['A'], np.arange(, , )))['B'].sum()
print(df1)
我的做法大体类似,但是稍微繁琐,对pd.groupby 理解不到位。groupby第一个参数也可以接收series或者dict,应用在dataframe的第一列值。
s = pd.cut(df['a'],bins=,labels=['one','two','three','four','five','six','seven','eight','nine','ten'])
df['label'] = s
df.groupby('label')['b'].sum()
一个全数值的DataFrame,返回最大3个值的坐标
df = pd.DataFrame(np.random.random(size=(, )))
print(df)
df.unstack().sort_values()[-:].index.tolist()
我的做法是取每个column的最大值,排序后再选最大的三个。很明显,繁琐。
注意,df必须先unstack后才能 sort_values,要不然会报错。
dti = pd.date_range(start='2015-01-01', end='2015-12-31', freq='B')
s = pd.Series(np.random.rand(len(dti)), index=dti)
s.head()
所有礼拜三的值求和
s[s.index.weekday == ].sum()
还有这种方法?!!
求每个自然月的平均数
s.resample('M').mean() 索引为时间序列的重要方法 resample 重采样
每连续4个月为一组,求最大值所在的日期
s.groupby(pd.Grouper(freq='4M')).idxmax() 我的做法
还有个pd.Grouper方法? FlightNumber列中有些值缺失了,他们本来应该是每一行增加10,填充缺失的数值,并且令数据类型为整数
df['FlightNumber'] = df['FlightNumber'].interpolate().astype(int) 我的做法
series,dataframe 都有 interpolate 这个方法,记一下 将From_To列从_分开,分成From, To两列,并删除原始列
temp = df.From_To.str.split('_', expand=True)
temp.columns = ['From', 'To']
df = df.join(temp)
df = df.drop('From_To', axis=) 我的做法
df['from'] = df['From_To'].str.split('_',expand=True)[]
df['to'] = df['From_To'].str.split('_',expand=True)[] 很明显,join更简洁,换个角度,如果列更多,我的方法就麻烦多了。
strip有个expand参数,很重要。python中的split 没有这个参数。
差别如下

Pandas 50题练习的更多相关文章
- POJ推荐50题
此文来自北京邮电大学ACM-ICPC集训队 此50题在本博客均有代码,可以在左侧的搜索框中搜索题号查看代码. 以下是原文: POJ推荐50题1.标记“难”和“稍难”的题目可以看看,思考一下,不做要求, ...
- JAVA经典算法50题(转)
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/51097928 JAVA经典算法50题 [程序1] 题目:古典问题:有一对兔子, ...
- 剑指offer 面试50题
面试50题: 题目:第一个只出现一次的字符 题:在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置. 解题思路一:利用Python特 ...
- MySQL练习50题
介绍一个学习SQL的网站:https://sqlbolt.com/ 习题来源于网络,SQL语句是自己的练习答案,部分参考了网络上的答案. 花了一晚上的时间做完,个人认为其中的难点有:分组提取前几名的数 ...
- Java经典逻辑编程50题
Java经典逻辑编程50题 2016-11-03 09:29:28 0个评论 来源:Alias_fa的博客 收藏 我要投稿 [程序1] 題目:古典问题:有一对兔子,从出生后第 ...
- sql 经典查询50题 思路(一)
因为需要提高一下sql的查询能力,当然最快的方式就是做一些实际的题目了.选择了这个sql的50题,这次大概做了前10题左右,把思路放上来,也是一个总结. 具体题目见: https://zhuanlan ...
- 转:sql 经典50题--可能是你见过的最全解析
题记:从知乎上看到的一篇文章,刚好最近工作中发现遇到的题目与这个几乎一样,可能就是从这里来的吧.^_^ 里面的答案没有细看,SQL求解重在思路,很多时候同一种结果可能有多种写法,比如题中的各科成绩取前 ...
- 力扣50题 Pow(x,n)
本题是力扣网第50题. 实现 pow(x, n) ,即计算 x 的 n 次幂函数. 采用递归和非递归思路python实现. class Solution: #递归思路 def myPow_recurs ...
- sql语句练习50题(Mysql版-详加注释)
表名和字段 1.学生表 Student(s_id,s_name,s_birth,s_sex) --学生编号,学生姓名, 出生年月,学生性别 2.课程表 Course(c_id, ...
随机推荐
- 为什么要用消息队列 及 自己如何设计一个mq架构
1. 解耦:如左图, 系统a因为业务需求需要调用系统b,后续因为业务需求可能需要改代码调用系统c,甚至还要考虑被调用的系统挂了访问超时的问题.耦合性太高! 如右图, 系统a产生一条数据发送到消息队列里 ...
- CSS链接使用伪类的顺序
顺序为:link-visited-hover-active a:link {color: #FF0000} /* 未访问的链接 */ a:visited {color: #00FF00} /* 已访问 ...
- 华为设备acl配置
拓扑图: 需求: 1.-vlan10内所有的主机,只能通过http访问vlan30-server的服务器;不能访问vlan40-server服务器2.-vlan20-pc1主机,可以访问vlan40- ...
- jquery遍历标签中自定义的属性方法
在开发中我们有时会对html标签添加属性,如何遍历处理 <ul> <li name="li1" sortid="nav_1">aaaaa ...
- windows_vs编译过程
visual studio 2010 编译程序时,首先是cpp经过预处理,处理掉#define,#include等等.#include部分,将头文件部分替换到cpp中.之后进行优化过程,到.s.之后进 ...
- linux系统特殊权限位 suid、sgid、sticky
linux系统特殊权限位 suid.sgid.stickysuid 使任意用户获得用文件属主相同的权限,sgid使用户获得与文件属组相同的权限(通过sgid获得的权限等同于同一用户组的权限) 表示方法 ...
- Insomni'hack teaser 2019 - Reverse - beginner_reverse
参考链接 https://ctftime.org/task/7455 题目描述 A babyrust to become a hardcore reverser 点我下载 解题过程 一道用rust写的 ...
- STL的容器哈希表
C++ STL中,哈希表对应的容器是 unordered_map(since C++ 11).根据 C++ 11 标准的推荐,用 unordered_map 代替 hash_map. 与Map的区别 ...
- <authentication> 元素
<authentication> 元素 配置 ASP.NET 身份验证支持.该元素只能在计算机.站点或应用程序级别声明.如果试图在配置文件中的子目录或页级别上进行声明,则将产生分析器错误信 ...
- [ByteCTF 2019]EZCMS
题目复现链接:https://buuoj.cn/challenges 参考链接:ByteCTF_2019&XNUCA_2019部分web题复现 一.知识点 1.源码泄露 访问www.zip获取 ...