笔记-pandas DataFrame常用操作

常用代码:

# coding:utf-8

import pandasas pd

import numpyas np

file ='/Users/stern/Desktop/DT/Gold standard datasets/Drug_smi/Enzyme_Drug_Structure.xlsx'

df = pd.read_excel(file)

print('查看数据框前几行')

print df.head()

print('查看数据框的列数')

print(df.columns.size)

print('查看数据框的行数')

print(df.iloc[:, 0].size)

print('查看Series的行数')

print(len(df.iloc[:,0]))

df1 = df.iloc[:, 0:1]

print('获取数据框第0列')

print(df1.head())

df2 = df.iloc[:, 1:2]

print('获取数据框第1列')

print(df2.head())

print('获取数据框第2行,第1列的值')

print(df.values[1][0])

print('对于第2行,第1列赋值为AAA,BBB')

df.iloc[1, 0] ='AAA'

print(df.iloc[1, 0])

df.loc[1, "Drug"] ='BBB'

print(df.iloc[1, 0])

print('列表转数据框,以行标准写入和以列标准写入或者通过np.array')

a = [[1, 2, 3, 4], [5, 6, 7, 8]]

data = pd.DataFrame(a)

print(data)

a1 = [1, 2, 3, 4]

b1 = [5, 6, 7, 8]

c1 = {"a": a1,

      "b": b1}

data = pd.DataFrame(c1)

print(data)

# 最好用的方法

data = pd.DataFrame(np.array(a))

print(data)

print('数据框转列表')

data_lst = np.array(data).tolist()

print(data_lst)

print("获取数据框的行索引,列索引")

print(list(np.array(data.index)))

print(list(np.array(data.columns)))

print('合并数据框')

# 报错,不行,两个数据框必须要有相同的一列

# data1 = pd.DataFrame(np.array([[11,12,13,14],[15,16,17,18]]),columns=['a','b','c','d'])

# print(data)

# print(data1)

# data_merge = pd.merge(data,data1)

# print(data_merge)

d1 = data.iloc[:, 0]

d2 = data.iloc[:, 3]

d3 = data.iloc[:, 2]

print(type(d1))

print(type(d2))==pd.Series

print(d2[0])

d_merge = pd.DataFrame({'column1': d1, 'column2': d2, 'column3': d3})

# 注意,使用字典合并时,value必须是series,不然报错ValueError: If using all scalar values, you must pass an index

print(d_merge)

print('Series转DataFrame')

a = pd.Series(data=[1, 2, 3, 4])

print(type(a))

print(type(a.to_frame()))

print(type(a.tolist()))

print('DataFrame转Series')

#方法 iloc后产生的是Series


print('数据框拼接')

# 数据框拼接(ignore_index=True,重新分配索引)

# 两种方式,concat、append皆可以

a = [[1, 2, 3, 4], [5, 6, 7, 8]]

result1 = pd.DataFrame(a)

c = [[11, 12, 13, 14], [5, 6, 7, 8]]

result2 = pd.DataFrame(c)

result3 = pd.concat([result1, result2], ignore_index=True)

result4 = result1.append(result2, ignore_index=True)

print('result3')

print(result3)

print('result4')

print(result4)

# 用法

# pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,

#          keys=None, levels=None, names=None, verify_integrity=False,

#          copy=True)

#

# axis:要粘在哪个轴上。默认0,粘贴行。

# join:默认outer,合集;inner,交集。

# ignore_index:布尔型,默认False。如果为Ture的话,会重新分配index从0...n-1。

# keys:一个序列,默认None。建立等级索引,作为最外层的level。

# levels:序列sequences构成的list,默认None。

#

print("数据框合并会删除一些重复的")

#数据框合并

a = [[1, 2, 3, 4], [5, 6, 7, 8]]

data2 = pd.DataFrame(a)

c = [[11, 12, 13, 14], [5, 6, 7, 8]]

data3 = pd.DataFrame(c)

data4 = pd.merge(data2, data3,how='outer')

print('data4')

print(data4)

# 用法

# pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,

#          left_index=False, right_index=False, sort=True,

#          suffixes=('_x', '_y'), copy=True, indicator=False)

#

# left: 一个dataframe对象

# right: 另一个dataframe对象

# how: 可以是

# 'left', 'right', 'outer', 'inner'.默认为inner。

# on: 列名,两个dataframe都有的列。如果不传参数,

# 而且left_index和right_index也等于False,

# 则默认把两者交叉 / 共有的列作为链接键(join

# keys)。

# 可以是一个列名,也可以是包含多个列名的list。

# left_on: 左边dataframe的列会用做keys。可以是列名,

# 或者与dataframe长度相同的矩阵array。

# right_on: 右边同上。

# left_index: 如果为Ture,用左侧dataframe的index作为

# 连接键。如果是多维索引,level数要跟右边相同才行。

# right_index: 右边同上。

# sort: 对合并后的数据框排序,以连接键。

# suffixes: 一个tuple,包字符串后缀,用来加在重叠的列名后面。

# 默认是('_x', '_y')。

# copy: 默认Ture,复制数据。

# indicator: 布尔型(True / FALSE),或是字符串。

# 如果为True,合并之后会增加一列叫做

# '_merge'。

# 是分类数据,用left_only, right_only, both来标记

# 来自左边,右边和两边的数据。


打印输出:

/Users/stern/miniconda3/envs/env_rdkit/bin/python /Users/stern/PycharmProjects/Stern/DTI/EssayLargeScale/pandas_learning.py

查看数据框前几行

    Drug                                                smi

0  D00002  NC(=O)c1ccc[n+]([C@@H]2O[C@H](COP(=O)(O)OP(=O)...

1  D00005  Cc1cc2nc3c(=O)[nH]c(=O)nc-3n(C[C@H](O)[C@H](O)...

2  D00007                            N[C@@H](CCC(=O)O)C(=O)O

3  D00014    N[C@@H](CCC(=O)N[C@@H](CS)C(=O)NCC(=O)O)C(=O)O

4  D00018                    O=C1O[C@H]([C@@H](O)CO)C(O)=C1O

查看数据框的列数

2

查看数据框的行数

445

查看Series的行数

445

获取数据框第0列

    Drug

0  D00002

1  D00005

2  D00007

3  D00014

4  D00018

获取数据框第1列

                                                smi

0  NC(=O)c1ccc[n+]([C@@H]2O[C@H](COP(=O)(O)OP(=O)...

1  Cc1cc2nc3c(=O)[nH]c(=O)nc-3n(C[C@H](O)[C@H](O)...

2                            N[C@@H](CCC(=O)O)C(=O)O

3    N[C@@H](CCC(=O)N[C@@H](CS)C(=O)NCC(=O)O)C(=O)O

4                    O=C1O[C@H]([C@@H](O)CO)C(O)=C1O

获取数据框第2行,第1列的值

D00005

对于第2行,第1列赋值为AAA,BBB

AAA

BBB

列表转数据框,以行标准写入和以列标准写入或者通过np.array

  0  1  2  3

0  1  2  3  4

1  5  6  7  8

  a  b

0  1  5

1  2  6

2  3  7

3  4  8

  0  1  2  3

0  1  2  3  4

1  5  6  7  8

数据框转列表

[[1, 2, 3, 4], [5, 6, 7, 8]]

获取数据框的行索引,列索引

[0, 1]

[0, 1, 2, 3]

合并数据框

<class 'pandas.core.series.Series'>

True

4

  column1  column2  column3

0        1        4        3

1        5        8        7

Series转DataFrame

<class 'pandas.core.series.Series'>

<class 'pandas.core.frame.DataFrame'>

<type 'list'>

DataFrame转Series

Process finished with exit code 0

print(result3)

    0  1  2  3

0  1  2  3  4

1  5  6  7  8

2  11  12  13  14

3  5  6  7  8

print(result4)

    0  1  2  3

0  1  2  3  4

1  5  6  7  8

2  11  12  13  14

3  5  6  7  8

print(data4)

    0  1  2  3

0  1  2  3  4

1  5  6  7  8

2  11  12  13  14

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容