Python基础-Pandas

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出现索引列。

#%%
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])}

#%%
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(); 路径撰写使用反斜杠或斜杠: 双反斜杠:"\Users\Desktop\practice\pathway.csv"(\单一反斜杠是转义符号! 所以要做一定的修改) 添加r:r"\Users\Desktop\practice\pathway.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 的含义是不重复写入列名。

#%%
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。

#%%
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 -

  • 30
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值