前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >​python单细胞学习笔记-day4(续)

​python单细胞学习笔记-day4(续)

作者头像
生信技能树
发布于 2025-01-22 03:13:21
发布于 2025-01-22 03:13:21
12200
代码可运行
举报
文章被收录于专栏:生信技能树生信技能树
运行总次数:0
代码可运行

前面,我们生信技能树的讲师小洁老师与萌老师新开了一个学习班:《掌握Python,解锁单细胞数据的无限可能》,身为技能树的一员,近水楼台先得月,学起!下面是我的学习笔记,希望可以给你带来一点参考

前面几天的学习笔记:

今天继续学习视频:python_day4 !一口气学完吧!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
touch day4.ipynb

课前复习到 37:39

1、条件语句

  • if 语句:if不支持直接批量计算,逻辑值只能是一个
  • if else语句

试试看报错的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 这段代码会报错
import numpy as np

y = np.array([3,5,-1,0])
print(y > 0)
y.any()

if(y>0):
 print("pos")
else:
 print("neg")

1.1 np.where

python里面的numpy提供了np.where函数,支持数组运算

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np # type: ignore

y = np.array([3,5,-1,0])
y2 = np.where(y>0, "pos", "neg")
print(y2.tolist())

1.2 case_when

pandas 里面的 case_when 方法支持多个条件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd

y = pd.Series([3,5,-1,0])
y.case_when([
 (y > 0, "pos"),
 (y < 0, "neg"),
 (pd.Series(True), "0")
])

2、循环语句

python里面的循环使用for函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
z = range(1,6)
for i in z:
 print(i)

ps = ["a","b","c"]
for p in ps:
 print(p)

3、列表推导式 55:57

相比传统的for循环,列表推导式更加简洁和易读,可以把结果直接保存为列表或者是字典

3.1 列表推导式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 列表推导式
numbers = [1,2,3,4,5]
# 计算平方
[x**2 for x in numbers]

3.2 字典推到式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 字典推导式
{x: x**2 for x in numbers}

4、批量读取文件

day3_preview文件夹中有四个文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import os
os.listdir("day3_preview")

from glob import glob
import pandas as pd

# 搜索所有以 csv 结尾的文件
files = glob("day3_preview/*.csv")
files

# 删除一个
# files.pop()
files.remove('day3_preview/gene.csv')
files

# 读取
result = []
for i in range(len(files)):
 result.append(pd.read_csv(files[i]))

# 使用 pd.concat 将文件按照行拼接在一起
res = pd.concat(result, ignore_index=True)
res.head()

列表推导式读取:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
result = [pd.read_csv(x) for x in files]
print([x.shape for x in result])
re = pd.concat(result, ignore_index=True)
print(re.shape)
re.head()

day3课后习题讲解 01:37:04

1.列表排序

  • 创建一个包含任意5个整数的列表
  • 使用.sort()方法将其从小到大排序
  • 使用.sort()方法将其从大到小排序
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import random

# 创建一个包含5个随机整数的列表,假设我们想要的范围是1100
my_random = [random.randint(1, 100) for _ in range(5)]
my_random

# 从小到大排序
my_random.sort()
my_random

# 从大到小排序
my_random.sort(reverse=True)
my_random

2.去重和计数

  • 以别名np导入numpy
  • 创建由a,b,c,a,b,d组成的列表,赋值给a
  • 去重,并输出去重后的结果
  • 去重,并统计每个数值出现的次数
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np

a = ['a','b','c','a','b','d']
print(a)

# 去重
print(np.unique(a))

# 去重并计数
uniq,counts=np.unique(a,return_counts=True)
print(uniq)
print(counts)
  • 以别名pd导入pandas
  • 创建由a,b,c,a,b,d组成的列表,赋值给a
  • 去重,并输出去重后的结果
  • 去重,并统计每个数值出现的次数
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd
a = ['a','b','c','a','b','d']
print(a)
b = pd.Series(a)
print(b)

uniq_a = b.unique()
count_a = b.value_counts()
print(uniq_a)
print(count_a)

3.矩阵

  • 新建矩阵,赋值给m1
  • 输出第二列的所有元素
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np

m1 = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(m1[:,1])
  • 使用切片操作提取该矩阵的前两行和后两列
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(m1)
sub_m = m1[0:2,1:3]
print(sub_m)

4.数据框

数据框如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd

df1 = pd.DataFrame({
 'gene': ['gene' + str(i) for i in range(1,5)],
 'change': ['up','up','down','down'],
 'score': [5,3,-1,-3]
})
df1

以下代码错误的是:

A、df1.gene

B、df1[['gene','change']]

C、df1[0,1]:正确的为 df1.iloc[0,1]

D、df1.shape

计算score列的最小值的正确代码是:A、B

A、df1.score.min()

B、min(df1.score)

C、min(df1$score)

D、df1$score.min()

绘图工具 seaborn模块 01:53:15

python的绘图工具有:

  • 作图:matplotlib、seaborn、plotnine
  • 拼图:subplots、patchworklib
  • 导出:savefig、ggsave

现在开始学习绘图工具seaborn了,首先在环境中安装一下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# bash终端
# 安装模块
conda activate sc
pip install seaborn -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
pip install pypalettes -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

seaborn和matplotlib

关系:

  • Seaborn是基于Matplotlib的统计数据可视化
  • Seaborn是Matplotlib的高级封装
  • Seaborn可以直接使用Matplotlib的方法

优缺点:

  • Matplotlib提供底层绘图能力,更细粒度的定制选项,代码肿
  • Seaborn提供开箱即用的美观样式,代码简洁,细节调整还是要靠Matplotlib

可以选择 用seaborn画图,matplotlib拼图、保存和调细节

seaborn 绘图

seaborn 是一个很受欢迎的图库,代码简洁,图片好看,但细节调整拼图保存还是matplotlib更胜一层。

  • 点图:scatterplot
  • 箱线图:boxplot
  • 点图+趋势线:regplot
  • 热图:clustermap、heatmap
  • 多图叠加:直接连续写绘图代码
  • 拼图:plt.subplots

0、库的安装和示例数据读取

安装已经在前面安装过了,这里直接读取数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd

iris = pd.read_csv('day4/iris.csv')
print(iris.head())

1、点图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import seaborn as sns
import matplotlib.pyplot as plt

sns.scatterplot(x='sepal_length', y='sepal_width',
    hue = 'species', data=iris)
plt.show()

最好的配色库 pypalettes

直接使用palette参数即可。2500+种配色:https://python-graph-gallery.com/color-palette-finder/

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pypalettes
pypalettes.load_cmap('a_palette')

换一个配色:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pypalettes
import seaborn as sns
import matplotlib.pyplot as plt

sns.scatterplot(x='sepal_length', y='sepal_width',palette='a_palette',
    hue = 'species', data=iris)
plt.show()

2、箱线图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sns.boxplot(x='species', y='sepal_length',data=iris,
   palette='Set2',hue='species')
plt.show()

3、点图+趋势线图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sns.regplot(x='sepal_length', y='sepal_width',data=iris)
plt.show()

4、热图

配色风格:https://seaborn.pydata.org/tutorial/color_palettes.html

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data = iris.drop('species',axis=1)
g = sns.clustermap(data, cmap='viridis')
plt.show()

热图:sns.heatmap(data,cmap='coolwarm')

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sns.heatmap(data,cmap='coolwarm')

5、多图叠加

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import seaborn as sns
import matplotlib.pyplot as plt

plt.figure(figsize=(10,6))
# 小提琴图
sns.violinplot(x='species', y='sepal_length',data=iris, palette='Set2',hue='species',alpha=0.3, legend=False)
# 箱线图
sns.boxplot(x='species', y='sepal_length',data=iris, palette='Set2',hue='species',width=0.3, legend=False)
# 点图
sns.stripplot(x='species', y='sepal_length',data=iris,color='black')

plt.title('Sepal Length Distribution')
plt.show()

6、图片设置(matplotlib)

更改x/y轴标题,图片标题

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sns.regplot(x='sepal_length', y='sepal_width', data=iris)
plt.xlabel('Sepal Length')
plt.ylabel('Sepal Width')
plt.title('Sepal Length')

7.拼图(matplotlib)

figureaxes以及以及axis的关系:https://steam.oxxostudio.tw/category/python/example/matplotlib-figure-axes.html

什么是 figure? figure 表示「画布」,表示 atplotlib 绘制图表的空间,在绘制图表时,要先创建一个画布,才能在加入各种元素,储存或输出图片时,也都是以 figure 为单位进行储存或输出。 什么是 axes? axes 表示「坐标系统」,如果是二维图表,axes 会包含两个坐标轴 (axis )、如果是三维图表,axes 会包含三个坐标轴(axis),依此类推,在一个 figure 之中,可以设定多个 axes,下图呈现 figure、axes 和 asix 的关系。ax是axes的缩写

这个图类似的在 R语言里面也有:《R绘图系统 第二版》

  • plt.subplots(1,2,figsize = (10,5)):一行两列
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fig, (ax1, ax2) = plt.subplots(1,2,figsize = (10,5))
sns.scatterplot(x='sepal_length', y='sepal_width', data=iris,ax=ax1)
sns.boxplot(x='species', y='sepal_length', data=iris,palette='Set2',hue = 'species',ax=ax2)
plt.show()

8.图片保存

使用plt.savefig函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
plt.figure(figsize=(10, 6))
sns.boxplot(x='species', y='sepal_length', data=iris, hue='species', palette='Set2', width=0.3, legend=False)
plt.title('Sepal Length Distribution')
plt.savefig("sns_plot1.png")

9.更多示例

更多示例:https://seaborn.pydata.org/examples/index.html

试一下边际散点图:Scatterplot with marginal ticks

https://seaborn.pydata.org/examples/marginal_ticks.html

加载数据。这里特别慢,采用方法:

去 这里下载到本地:https://github.com/mwaskom/seaborn-data,然后本地加载。

load_dataset包含有三个参数:

  1. name: str,代表数据集名字;
  2. cache: boolean,当为True时,从本地加载数据,反之则从网上下载;
  3. data_home: string,代表本地数据的路径
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import seaborn as sns
sns.set_theme(style="white", color_codes=True)

mpg = sns.load_dataset('mpg',data_home='day4/seaborn-data-master/',cache=True)
#mpg = sns.load_dataset("mpg")
print(mpg.head())

绘图:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Use JointGrid directly to draw a custom plot
g = sns.JointGrid(data=mpg, x="mpg", y="acceleration", space=0, ratio=17)
g.plot_joint(sns.scatterplot, size=mpg["horsepower"], sizes=(30, 120),
             color="g", alpha=.6, legend=False)
g.plot_marginals(sns.rugplot, height=1, color="g", alpha=.6)

本次学习到这里,day4视频刷完~ 下次见

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-01-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Burpsuite Professional安装及使用教程(抓包)
1、先从吾爱破解论坛下载工具:https://down.52pojie.cn/Tools/Network_Analyzer/Burp_Suite_Pro_v1.7.37_Loader_Keygen.zip 工具运行需要Java环境,请自行安装,此处不赘述。解压完成后右击burp-loader-keygen.jar,以Java(TM) Platform SE binary的方式打开keygen
全栈程序员站长
2022/09/06
2.3K0
Burpsuite Professional安装及使用教程(抓包)
BurpSuite 爆破网页后台登陆
由于 Burp Suite是由Java语言编写而成,所以你需要首先安装JAVA的运行环境,而Java自身的跨平台性,使得软件几乎可以在任何平台上使用。Burp Suite不像其他的自动化测试工具,它需要你手工的去配置一些参数,触发一些自动化流程,然后它才会开始工作,接下来我们将手动配置好代理,然后暴力破解一个网页的账号密码,本篇内容的实用性不强,因为现在的页面大多数有验证码或采用Token验证,且登录次数也会做限制,所以了解即可。
王 瑞
2022/12/28
5K1
BurpSuite 爆破网页后台登陆
Burpsuite教程(一)Burpsuite 火狐谷歌浏览器抓包教程
1.打开测试工具BurpSuite,默认工具拦截功能是开启的,颜色较深,我们点击取消拦截。
全栈程序员站长
2022/08/19
6.8K0
Burpsuite教程(一)Burpsuite 火狐谷歌浏览器抓包教程
Kali使用burpsuite爆破登录
在burpsuite中,选择proxy下的options 设置成图中信息 默认如下:
院长技术
2021/02/19
3.7K0
Kali使用burpsuite爆破登录
渗透测试神器BurpSuite模块说明及使用教程
BurpSuite简介: Burp Suite 是用于攻击web 应用程序的集成平台。它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程。所有的工具都共享一个能处理并显示HTTP 消息,持久性,认证,代理,日志,警报的一个强大的可扩展的框架。 Burp Suite是一款信息安全从业人员必备的集 成型的渗透测试工具,它采用自动测试和半自动测试的方式,通过拦截HTTP/HTTPS的web数据包,充当浏览器和相关应用程序的中间人,进行拦截、修改、重放数据包进行测试,是web安全人员的一把必备的瑞士军刀。
天乐404
2023/11/16
3.2K0
渗透测试神器BurpSuite模块说明及使用教程
BurpSuite2020.12破解版下载build5207 cracked
在显示设置中的新的浅色和深色主题之间切换时,您不再需要在应用此更改之前重新启动Burp。
Gamma实验室
2020/12/23
2.3K0
BurpSuite2020.12破解版下载build5207 cracked
黑客玩具入门——9、Burp Suite
Burp Suite是一款集成化的渗透测试工具,包含了很多功能,可以帮助我们快速完成对web应用程序的渗透测试和攻击。Burp Suite是由Java语言编写,因为Java是可以跨平台的,所以Burp Suite也是跨平台的,支持windows、linux、mac。
zaking
2023/12/02
1.7K0
黑客玩具入门——9、Burp Suite
BurpSuite系列(一)----Proxy模块(代理模块)
Proxy代理模块作为BurpSuite的核心功能,拦截HTTP/S的代理服务器,作为一个在浏览器和目标应用程序之间的中间人,允许你拦截,查看,修改在两个方向上的原始数据流。
HACK学习
2019/08/07
2.6K0
BurpSuite系列(一)----Proxy模块(代理模块)
由HTTPS抓包引发的一系列思考
在渗透测试过程中,必不可少的操作就是使用BurpSuite、Fildder等抓包工具对应用程序的数据包进行拦截、观察和篡改。那么问题来了——对于使用HTTPS协议的站点,在BurpSuite中拦截到的数据包为何也是“明文传输”?如下图所示。
FB客服
2019/12/30
1.9K0
Burpsuite工具的代理抓包功能实验
通过本实验理解Burpsuite工具代理抓包功能的配置方法,掌握如何利用Burpsuite工具查看request和response信息,熟悉Burpsuite常见功能的使用方法。
未名编程
2024/10/12
2700
Burpsuite工具的代理抓包功能实验
应用于Firefox浏览器关于burpsuite的代理问题-详解
 当时啊,我寻思这我之前物理机没有安装这个火狐浏览器的时候可以抓包爆破,总之什么都可以,但是最近我在物理机上安装了个火狐浏览器,然后做ctf题的时候发现burp就什么都干不了,随之我觉得难不成是物理机和虚拟机两者的火狐浏览器发生冲突了?(菜鸡饶头)
用户8909609
2023/10/13
1.1K0
应用于Firefox浏览器关于burpsuite的代理问题-详解
抓包神器Burpsuite保姆级破解及使用指南
本公众号提供的工具、教程、学习路线、精品文章均为原创或互联网收集,旨在提高网络安全技术水平为目的,只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试加入交流群讨论或留言私信,如有侵权请联系小编处理。
网络安全自修室
2021/12/04
6.5K3
抓包神器Burpsuite保姆级破解及使用指南
小白也能懂!教你快速入门使用Burpsuite抓包
本公众号提供的工具、教程、学习路线、精品文章均为原创或互联网收集,旨在提高网络安全技术水平为目的,只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途。
网络安全自修室
2022/03/30
6.9K0
小白也能懂!教你快速入门使用Burpsuite抓包
burpsuite常用插件总结
主要是在主动扫描和被动扫描时,为了增强扫描漏洞效果,使用python编写的,所以要加载python 环境
红队蓝军
2024/08/29
9610
burpsuite常用插件总结
Wireshark、Burpsuite、Charles三大抓包神器抓取https明文
通过设置系统变量SSLKEYLOGFILE来达到解密https的效果,tls握手结束后,会将session key存放到SSLKEYLOGFILE定义的keylog中,wireshark通过加载keylog文件,将https解密成明文。
RokasYang
2021/09/10
34.2K0
Wireshark、Burpsuite、Charles三大抓包神器抓取https明文
WEB安全新玩法 [9] 重置密码之验证流程防绕过
一般来说,业务流程中出现多个操作环节时,是需要顺序完成的。程序设计者往往按照正常用户的操作顺序实现功能,而忽略了攻击者能够绕过中途环节,直接在后续环节上进行非法操作。iFlow 业务安全加固平台能够在不修改网站程序的情况下,强制流程的顺序执行。
天存信息
2021/07/29
1.2K0
WEB安全新玩法 [9] 重置密码之验证流程防绕过
带你玩转系列之Burpsuite
Burp Suite是无人不晓的web渗透测试必备的工具。从应用程序表面的映射和内部分析,到探测和利用漏洞等过程,所有插件支持整体测试程序而无缝地在一起工作。
Khan安全团队
2020/03/19
1.8K0
安全测试——利用Burpsuite密码爆破(Intruder入侵)
最近一直在想逛了这么多博客、论坛了,总能收获一堆干货,也从没有给博主个好评什么的,想想着实有些不妥。所以最近就一直想,有时间的时候自己也撒两把小米,就当作是和大家一起互相学习,交流一下吧。(注:本文章仅用于技术交流和学习,请勿用于非法用途。)
测试开发社区
2019/09/20
10.4K0
安全测试——利用Burpsuite密码爆破(Intruder入侵)
经验分享 | Burpsuite抓取非HTTP流量
使用Burp对安卓应用进行渗透测试的过程中,有时候会遇到某些流量无法拦截的情况,这些流量可能不是HTTP协议的,或者是“比较特殊”的HTTP协议(以下统称非HTTP流量)。遇到这种情况,大多数人会选择切换到Wireshark等抓包工具来分析。 下面要介绍的,是给测试人员另一个选择——通过Burpsuite插件NoPE Proxy对非HTTP流量抓包分析,并可实现数据包截断修改、重放等功能。 NoPE Proxy简介 NoPE Proxy插件为Burpsuite扩展了两个新的特性: 1. 一个可配置的DNS
FB客服
2018/02/26
4.3K0
经验分享 | Burpsuite抓取非HTTP流量
BurpSuite之暴力破解用户密码
针对用户名和密码的破解,可以有以下几种方式 1、已知用户名,未知密码 2、用户名和密码都未知 3、已知密码,未知用户名 以上都可利用BurpSuite Intrude模块进行暴力破解 一、环境准备 下
用户6367961
2020/05/01
8.2K0
推荐阅读
相关推荐
Burpsuite Professional安装及使用教程(抓包)
更多 >
LV.1
这个人很懒,什么都没有留下~
目录
  • 课前复习到 37:39
  • 1、条件语句
    • 1.1 np.where
    • 1.2 case_when
  • 2、循环语句
  • 3、列表推导式 55:57
    • 3.1 列表推导式
    • 3.2 字典推到式
  • 4、批量读取文件
  • day3课后习题讲解 01:37:04
    • 1.列表排序
    • 2.去重和计数
    • 3.矩阵
    • 4.数据框
  • 绘图工具 seaborn模块 01:53:15
    • seaborn和matplotlib
    • seaborn 绘图
      • 0、库的安装和示例数据读取
      • 1、点图
      • 最好的配色库 pypalettes
      • 2、箱线图
      • 3、点图+趋势线图
      • 4、热图
      • 5、多图叠加
      • 6、图片设置(matplotlib)
      • 7.拼图(matplotlib)
      • 8.图片保存
      • 9.更多示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档