前言: 本人研究方向是图像生成这个模块,所以编程语言一直使用的是python。 研一下半学期参加腾讯比赛,深感在数据清洗中pandas中的各种库函数的便捷性,所以简单记录了一下自己对pandas中各种函数的理解,方便下次比赛的时候能够直接使用。因为只是个人简单的理解,所以难免会有些问题,所以仅供参考。
本节主要介绍pandas中两种数据格式: Series 和 DataFrame
Series的特点如下:
1、直观上的感觉Series相当于python中的字典,
2、Series中的索引(index)相当于字典中的关键字,Series中的值(value)相当于字典中的值
3、Series中value的值是list时,首先通过索引得到对应的值,然后通过list的索引操作得到最后值
4、Series的问题只能通过行索引访问元素,但是无法直接操作列操作,索引pandas引入了DataFrame。
下面的程序分别介绍Series的创建、Series的两种索引操作
# 第一步引入pandas的数据包
import pandas as pd
# 生成一个Series对象 Series中存放的不同类型的数据
series = pd.Series([['A1', 'A2', 'A3', 'A4'], ['1', '2', '3', '4'], 5, -5, 'test'], index=['A', 'B', 'C', 'D', 'E'])
# 直接打印Series数据 通过索引得到Series中某一行的数据 得到某行数据之后得到具体列的值
print(series, series['A'], series['A'][0:2])
DataFrame的特点如下:
1、同样DataFrame和python中字典结构相同,
2、DataFrame中关键字对应的是列名,关键字的值对应的是某列的值
3、DataFrame中,既有行索引又有列索引,行索引默认是(0, n-1) , 列索引对应的是列名
下面的程序演示的是打印DataFrame中索引和列的名称、读取某一列的值、以及读取某一行的值,以及在原始数据中增加新的列、以及根据条件筛选记录。
在这里主要介绍一下按照要求筛选记录的方法,
第一步: data_frame['money'] > 3意思是逐条比较data_frame中money的值,如果大于三返回值为True,否者为False
第二步: data_frame[]为True时,则显示整行数据
print('数据集中money的值大于3的值有:\n', data_frame[data_frame['money'] > 3])
import pandas as pd
import numpy as np
data = {'name': ['YYLin', 'YYLin_1', 'YYLin_2', 'YYLin_3', 'YYLin_4'],
'birth_day': [2000, 2001, 2002, 2001, 2002],
'age': [6, 7, 8, 9, 10]}
# 读取数据并加上相关索引
data_frame = pd.DataFrame(data, index=['one', 'two', 'three', 'four', 'five'])
# 显示原始数据中列的名称 以及对应的索引值
print(data_frame.columns, data_frame.index)
# 按照列进行数据的读取
print(data_frame['name'])
# 按照行进行数据的读取
print(data_frame.loc['three'])
# 在数据集中增加一列操作
data_frame['money'] = np.arange(5)
print("增加一列之后DataFrame的形状:\n", data_frame)
print('中间结果是:\n', data_frame['money'] > 3)
print('数据集中money的值大于3的值有:\n', data_frame[data_frame['money'] > 3])