1、Pandas简介(类似于Excel)
一个基于NumPy数据分析包。
提供了高效地操作大型数据集所需的工具,支持数据上做各种变化。 为Python提供高性能、易使用的数据结构和数据分析工具。 用于数据挖掘和数据分析,同时也提供数据清洗功能。 使用时先导入 import pandas as pd (往后的调用只需要输入pd即可,当然也可以把as pd 改成任何使用者喜欢的词汇,比如 as AB 之类的) 里面有两大数据结构在很多情况下都会用到: Series 和 DataFrame。
2、Series
Pandas中的主要数据结构之一,例如: pd.Series([1,"TP53","cd44","cd168",78]); pd.Series([1,"TP53","cd44","cd168",78], index = ["a","b","c","d","e"])。 如果函数中不主动标记index名称,那么最后得到的结果中系统会自动生成一串数字对数据进行排序,如果函数中加入了自定义的index后最后的结果会出现按自定义index出现索引列。
代码语言:javascript复制#%%
import pandas as pd
# Series
genes_value = [1,"TP53","cd44","cd168",78]
s1 = pd.Series(genes_value)
print(s1)
# 定义索引
index_ID = ["a","b","c","d","e"] #index的个数要与之前的值的数量一致
s2 = pd.Series(genes_value,index = index_ID)
print(s2)
# 0 1
# 1 TP53
# 2 cd44
# 3 cd168
# 4 78
# dtype: object
# a 1
# b TP53
# c cd44
# d cd168
# e 78
# dtype: object
3、DataFrame
Pandas中的另一个主要数据结构。 既有行索引也有列索引,可以看成由多个Series组成的数据结构。 可存储整数、浮点数、字符串等类型的数据。
例如:pd.DataFrame{("HNSC" : ["TP53","CD44","HMMR"], "LIHC" : ["Alice","GBM","WCG"], "Num" : [24,26,19])}
代码语言:javascript复制#%%
import pandas as pd
df_value = {
"HNSC" : ["TP53","CD44","HMMR"],
"LIHC" : ["Alice","GBM","WCG"],
"Num" : [24,26,19]
}
df1 = pd.DataFrame(df_value)
print(df1)
# 定义索引
index_ID = ["a","b","c"] #index的个数要与之前的值的数量一致
df2 = pd.DataFrame(df_value,index = index_ID)
print(df2)
# HNSC LIHC Num
# 0 TP53 Alice 24
# 1 CD44 GBM 26
# 2 HMMR WCG 19
# HNSC LIHC Num
# a TP53 Alice 24
# b CD44 GBM 26
# c HMMR WCG 19
4、文本文件读写(txt,csv)
需要先知晓几个函数。
查看当前工作目录:os.getcwd(); 路径撰写使用反斜杠或斜杠: 双反斜杠:"UsersDesktoppracticepathway.csv"(单一反斜杠是转义符号! 所以要做一定的修改) 添加r:r"UsersDesktoppracticepathway.csv" 斜杠:"/Users/Desktop/practice/pathway.csv" .: 表示当前目录, ..: 表示上级目录。
txt文件:记事本文件,对于分隔符没有明确要求,可以采用逗号、制表符、空格等多种不同符号。
csv文件:逗号分隔值文件,字段间有逗号隔开,逗号分隔的txt文件。
txt和csv文本文件的读取:
import pandas as pd pd.read_csv("practive/pathway.txt"); pd.read_csv("practive/pathway.csv", sep = " ");
重要参数:sep,usecols, nrows, skiprows
sep: 如果不指定参数,Python则会使用逗号分隔。如果数据第一行不是列名,则需要加上header = None。读入指定列的文件可以使用参数 usecols = [0,1] ; usecols = ["name", "symbols"] 类似这种,意味着读取第1和第2列数据 或者 name列或者symbols列数据,如果使用nrows = 2 是指定读取数据的前两行,skiprows = 2, 从文件的第三行开始读取数据。
txt和csv文本文件的保存:
常规方式: import pandas as pd data.to_csv("practive/pathway.csv", index = False) 行索引不写入文件,数据中如果有中文需要添加 encoding = "utf_8_sig"。
也可以再文件中追加写入: import pandas as pd data.to_csv("practive/pathway.csv", mode = "a", header = False); mode = "a" 的含义是append mode, 如果指定文件已存在,则在指定文件后追加写入,如果指定文件不存在,则创建该文件然后写入。header = False 的含义是不重复写入列名。
代码语言:javascript复制#%%
import os
print(os.getcwd())
# csv文件读取
df1 = pd.read_csv("/Users/zaneflying/Desktop/practice/pathway.csv")
print(df1)
# csv文件读出
df1.to_csv("/Users/zaneflying/Desktop/df1.csv",
index = False, # 去除索引
sep = " ") # 用什么分割符号分隔
#%%
import os
print(os.getcwd())
# txt文件读取
df2 = pd.read_csv("/Users/zaneflying/Desktop/practice/complete_matrix_output CTRPv2.txt")
print(df2)
# txt文件读出
df2.to_csv("/Users/zaneflying/Desktop/df2.txt",
index = False) # 去除索引
5、excel文件的读写(xls,xlsx)
常规读取: import pandas as pd df3 = pd.read_excel("/Users/Desktop/practice/Autophagy.xlsx", sheet_name = "Sheet1") #限定读取哪个表格。 df4 = pd.read_excel("/Users/Desktop/practice/Autophagy.xlsx", sheet_name = "Sheet1", #限定读取哪个表格 usecols = ["Name","Symbol"] #用列的数字位置也可以 ) 若不指定sheet_name时则默认读取第一张表的数据,读取指定列数据时使用usecols。index = False。
代码语言:javascript复制#%%
import os
print(os.getcwd())
# excel文件
df3 = pd.read_excel("/Users/zaneflying/Desktop/practice/Autophagy.xlsx",
sheet_name = "Sheet1") #限定读取哪个表格
print(df3)
df4 = pd.read_excel("/Users/zaneflying/Desktop/practice/Autophagy.xlsx",
sheet_name = "Sheet1", #限定读取哪个表格
usecols = ["Name","Symbol"] #用列的数字位置也可以
)
print(df4)
df4.to_excel("/Users/zaneflying/Desktop/df4.xlsx", index = False)
# 多文件读成一个excel文件
path = "/Users/zaneflying/Desktop/new_excel.xlsx"
with pd.ExcelWriter(path) as writer:
df3.to_excel(writer,sheet_name = "sheet1",index = False)
df4.to_excel(writer,sheet_name = "shee12",index = False)
注:若对内容有疑惑或者有发现明确错误的朋友,请联系后台(欢迎交流)。更多内容可关注公众号:生信方舟
- END -