Pandas是非常有力的数据分析工具。我刚开始学习使用Pandas处理数据,所以想做下笔记,加深印象。我这里整理了一下。
# 首先导入pandas包
import pandas as pd
# 如果有必要,导入numpy
import numpy as np
pandas 保存数据的格式dataframe,很多操作都是基于这一格式进行的。我在这里先创建一个dataframe格式的数据表。这一格式可以理解为表格样式的,我们有表头,有行名,有数据。
data_table = pd.read_csv(filepath_or_buffer='data.csv',sep=',',header=0,usecols=[5,9,11])
# header是列名,默认为0,即第一行.如果文件中没有列名,则header设为None.
# usecols是使用的列,我这里使用了第6,10,12列.
data_sheet = pd.read_excel(io='data.xls',sheetname='',header=0,index_col=,usecols=[5,9,11])
# io是表格路径,header,usecols 同read_csv
# sheetname是使用哪一个sheet表,如sheetname=0,即使用第一个表格sheet1.也可以写sheetname='sheet1'
# index_col是索引列
在这里我自己编写了一些数据,当然是随意写的,为了演示操作效果,需要有这样的实例。表格图如下:
一,拷贝一个dataframe,我有一个df是全部的信息表格,我这里只想要前两行的部分信息,代 码如下
subdf = pd.DataFrame(df,index=[0,1],columns=['name','value'])
name value
0 C罗 1040.0
1 梅西 1450.0
二,索引切片
subdf = df['name']
取name那一列,结果为
如果要取多列,或者多行
subdf = df[['name','ability']]
# 取 name 和 ability 那两列
subdf = df[2:5]
# 包括 index 为2的行不包括 index 为5的行
左边多列,右边多行。
subdf = df.loc[[3,5,7],['name','value']]
#---------------------------------------
subdf = df.iloc[3:7,0:]
# iloc 不同的是用的是下标表示行与列
# ix 也能达成这样的目的
subdf = df.ix[3:6,['name','value']]
subdf = df.at[3,'name']
#---------------------
subdf = df.iat[3,0]
# at 具体到某一元素,如上面的输出为 伊涅斯塔
三,筛选
subdf = df[df.ability>90][['name','position']]
找出能力大于90的球员名字及位置。
subdf = df[df.ability.isin(['89'])]
找出 能力值 为89 的球员。
四,删除,添加
subdf = df.append(pd.DataFrame(..))
# 添加操作 或者直接
df['age'] = [..]
# 这样相当于添加一列age
# 或具体来说
df['age'] = pd.DataFrame([..],index=[3,5,7,8,9,13,16])
#这都是对列的扩充
df.append(pd.DataFrame({'name':'库蒂尼奥','position':'中场','ability':87,'value':890.0},index=[17])
# 这是添加了一行
subdf = df.drop([3,6,9,10,12,15,16],axis=0)
# 0删除行,1删除整列