Pandas入门

Pandas基于两种数据类型 seriesdataframe

series

series 是一种一维数据类型,每个元素都带有各自的标签(相比较于numpy增加了标签这一概念,标签可以是数字也可以是字符)

dataframe

dataframe是一种二维的数据结构(表格型),每个轴都要标签,相当于series的扩展


一些操作

data.head() 
# 输出前五行
data.head(10)
# 输出前10行
data.tail()
# 输出后5行
查找

通常使用的名字在pandas中查找列
data['collect_time'],得到的是一个series(因此dataframe相当于series的字典)
可以修改列的名字,方便使用
data.columns = ['a','b','c']

长度

len(data) 可以返回数据行数(总共多少条纪录)

若想要知道一些数据集的基本统计数据,也可以直接简单实现

过滤
  1. 根据一些条件进行筛选过滤
data[data['key_word_1']>5]
# 对于整个表格,根据key_word_1这一列的数据,只保留其大于5的部分

也可以使用复合条件表达式
但是只能用&(()&()),不能使用and

2.对于字符串的过滤
可以通过:
data[data['time'].str.startwith('199')]
来进行过滤,不能直接对字符串操作

行索引

如果行标签是数字型的,可以通过iloc来索引

data.iloc[30]

iloc只对数字标签有用
对于字符标签,可以使用loc
data.loc['2000/01']

排序

将索引排序,sort_index
ascending = False:降序
默认为升序

data.sort_index(ascending=False)

将排序后的dataframe恢复:reset_index

data = data.reset_index('water_year')
# 根据water_year恢复
对数据集进行操作,使其应用某个函数
  1. 对某一列应用函数:apply
  2. 对整个数据集应用函数:applymap
    函数不用带参数
data['year'] = data['water_year'].apply(function)
# 只对data中的‘water_year’列应用了function函数,并赋给了‘year’列
两个dataframe合并-->merge
data_new = data.merge(data_1, on = 'year')

关键字on指定需要合并的列

isna-->判断是否为NAN
data['time'].isna()
# 返回series,若为NAN,则返回True;否则返回False
求和 sum
data.sum() # 每列求和
data.sum(1) # 行求和
data.apply(lambda x:x*2) # 将每个元素*2
筛选数据 --> isin([])
data.E.isin(['a','c'])
# 根据第E列中属于['a','c']的部分进行输出
isin的反函数

前面加上~(取非)

唯一值(去重)-->unique()
data.unique()
# 返回去重之后的array
删除-->drop()
data.drop([1])
data.drop(['time'],axis = 1)
#  删除列时要加上axis= 1
按列删除na行-->dropna(subset=['time'])

将‘time’列数值为na的行删除

列的移动
>>>time = data.pop('time)
>>>data.insert(4,'time',time)
# 先删除后插入
在指定位置插入列
>>>data.insert(0, 'time', time)
插入行

无法直接在指定位置上插入行
TODO:

drop_duplicates:去掉重复项
分片
# 按照time分片
>>>time_list = data['time'].unique() # 找到所有time的不重复项
>>>data0 =  data[ data['time'].isin([time_list [0]]) ] 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容