做“Python数据分析之 Pandas Dataframe应用自定义”的攻略,具体如下。
前置知识:Pandas
Pandas是Python数据分析库的一个重要工具,它提供了广泛的数据操作功能以及数据结构,主要是Series(一维数据)和DataFrame(二维数据)。
DataFrame是Pandas里最常用的数据结构之一,通常看似Excel表格,拥有行列索引、标头等各种信息。
我们知道,在Pandas中,我们可以直接创建一个DataFrame并处理它。但有时候处理的内容不会像pandas默认提供的一样,此时我们可以定义一些对原有的DataFrame进行改变后返回新的DataFrame的函数,下面是代码实例:
def add_month(x):
data,month = x.split('-', 1)
return data + '-0' + month if len(month) == 1 else x
df = pd.read_csv('myfile.csv')
df['month'] = df['month'].apply(add_month)
这里定义的函数add_month将DataFrame中的'month'数据转换为我们所期望("YYYY-MM"),然后使用apply将其全部应用到'month'列中。
以下是两个示例说明:
一张员工表,有员工ID、姓名、性别、入职日期和所在部门,我们需要将日期的年月日分解成单独的年、月、日三个字段。
# 导入pandas
import pandas as pd
# 读取csv文件
df = pd.read_csv('employee.csv')
# 定义函数,处理入职日期
def process_date(x):
year, month, day = x.split('-')
return year, month, day
# 分解日期,获取单独的年、月、日三个字段
df[['year', 'month', 'day']] = df['date'].apply(process_date).apply(pd.Series)
# 输出处理后的结果
print(df)
输出结果:
id name gender date dept year month day
0 1 John M 2002-10-15 HR 2002 10 15
1 2 Jane F 2002-05-22 Admin 2002 05 22
2 3 Susan F 2003-06-21 HR 2003 06 21
3 4 Tom M 2004-01-14 Admin 2004 01 14
4 5 Ben M 2005-08-15 HR 2005 08 15
在字符数据中,有许多空值NaN,某些数据操作可能会因为这些NaN值引起异常,我们需要将这些NaN值替换成其它表述。
# 导入pandas
import pandas as pd
# 创建带有NaN值的DataFrame
df = pd.DataFrame([{'A':1, 'B':2},{'A':3, 'B':np.nan},{'A':5, 'B':6},{'A':np.nan, 'B':1}])
# 定义函数,处理NaN值
def replace_nan(x):
return x.fillna('')
# 替换NaN值
df = df.apply(replace_nan)
# 输出处理后的结果
print(df)
输出结果:
A B
0 1 2
1 3
2 5 6
3 1
Pandas Dataframe提供的处理方法并不能满足所有需求,自定义处理函数可以拓宽将DataFrame进行操作的范围。这种自定义的处理方式可以应用于许多数据清理和预处理方面,这也是Pandas强大之处之一。
本文链接:http://task.lmcjl.com/news/17176.html