操作题目
1、如何查看python已安装的第三方库(有两种方法)
(1)在cmd里输入如下命令:pip list
(2)通过第三方库安装位置查看
a. 首先可以查看python安装位置:在cmd命令行里输入:where python
b.在python安装路径的Lib\site-packages里查看已安装库:C:\Program Files (x86)\Anaconda3\Lib\site-packages
2、Mysql特定版本 group by 后用 * 出错 ,报错出现 Error 1055 应如何解决
这个问题没有遇到过,在网上查询据说原因为:在MySQL5.7之后,sql_mode中默认存在ONLY_FULL_GROUP_BY,SQL语句未通过ONLY_FULL_GROUP_BY语义检查所以报错。
便于理解大概是这样的:以SQL语句select columes from table group by list为例,columns必须是聚集函数或者在group by后的表达式list中,并且list中必须包含主键,否则也会报错。
如:SELECT name FROM customer GROUP BY `name`;该SQL执行成功,因为name包含在group by后的表达式中
SELECT name, contact FROM customer GROUP BY `name`;该SQL执行失败,因为contact没有包含在group by后的表达式中
解决方案(永久解决):
(1)在MySQL下执行SELECT @@sql_mode语句
(2)将查询结果中的ONLY_FULL_GROUP_BY去掉然后复制,打开MySQL的配置文件,将sql_mode的值设置为复制的值(若没有sql_mode在[mysqld]下方添加一行即可)。
MySQL配置文件所在位置:
安装版可通过windows服务所对应mysql启动项,查看其对应属性->可执行文件路径,获取my.ini路径。
免安装版一般在其根目录下。(默认是my-default.ini,必须将名字改为my.ini才能生效)
(3)重启MySQL服务即可生效
MySQL
1、语句效率,子查询与连接后哪种效率更高?为什么?请写出具体例子。(以经典45道题为例)
一般来说连接查询效率会高于子查询,由于经典45题里数据量较小,时间上看不太出来,但应该是这个逻辑,以where后子查询为例
以第6题为例:
#6.查询学过「张三」老师授课的同学的信息
1)使用子查询时,此时会将student表里的每一行数据的sid拿到IN后面的子查询里面去匹配,并且每次匹配都会执行一次后面的子查询,所以后面的子查询会执行count(sid)次
2)使用join连接查询时,会将join后面的表执行一次然后作为一个新表b与student相连接,连接时只需要找出student表中与b表相同的sid即可,字表b只会执行一次,所以效率应该会高于上面的子查询
2、left join 后的 on 条件1 and 条件2,与left join 后的 on 条件1 where 条件2,有什么区别?
区别在:前者最后依然会返回left join左边表完整的数据,即使经过筛选后右表相应数据为null,
而后者在连接后再经过where条件筛选,将对左右表数据一起进行筛选,并不能保证左表数据的完整性
python
一、存在一份生成的数据
问题:
1、该生成的数据索引列的格式类型是什么?(直接回答)
datetime64
2、有哪些方式可以查看数据类型?
df.info() df.dtypes df['column'].dtype type()
3、如何查看索引的数据类型?
df.index
4、df.loc[‘2013-01-01’] 可以取出对应第一条数据吗?
可以
5、如果想要同时取 第一行和第三行数据,应该如何处理?
隔行切片: df.iloc[[0,2]]
二、apply、applymap、map的区别是什么?适用场景是什么?请以上述数据搭配函数举例试验。
生成随机DataFrame
apply:作用于行或列求最大值,axis默认为0求列最大值,1为求行最大值
applymap:作用于DataFrame里的每一个数据
map:作用于一个series里的每一个元素