函数下午茶(6):Pandas-最后四个函数
1. DataFrame.pct_change()函数
介绍
DataFrame.pct_change(periods=1, fill_method='pad', limit=None, freq=None, **kwargs)
当前元素和先前元素之间的百分⽐变化。默认情况下,计算与前⼀⾏相⽐的百分⽐变化。这在⽐较元素时间序列的变化百分⽐时很有⽤。
参数说明
参数 | 介绍 |
---|---|
periods | 整型,默认为1,⽤于形成百分⽐转换周期 |
fill_method | 字符型,默认’pad’。NA处理⽅法选择 |
limit | 整型。处理NA的数量 |
freq | 时间序列API使⽤增量(e.g. ‘M’ or BDay()) |
举例
1 #⽣成数据源
2 df = pd.DataFrame({
3 'FR': [4.0405, 4.0963, 4.3149],
4 'GR': [1.7246, 1.7482, 1.8519],
5 'IT': [804.74, 810.01, 860.13]},
6 index=['1980-01-01', '1980-02-01', '1980-03-01'])
7 df
8 >> FR GR IT
9 1980-01-01 4.0405 1.7246 804.74
10 1980-02-01 4.0963 1.7482 810.01
11 1980-03-01 4.3149 1.8519 860.13
12 #计算各列随着时间变化的百分⽐,添加axis=’columns’参数可以计算横向百分⽐
13 df.pct_change()
14 >> FR GR IT
15 1980-01-01 NaN NaN NaN
16 1980-02-01 0.013810 0.013684 0.006549
17 . 1980-03-01 0.053365 0.059318 0.061876
2. Pandas.date_range()函数
介绍
返回固定频率的⽇期时间索引
pandas.date_range(start=None,end=None,periods=None,freq=None,tz=None, normalize=False,
name=None, closed=None, **kwargs)
参数说明
参数 | 介绍 |
---|---|
start | 字符型,datetime-like数据。⽇期开始 |
end | 字符型,datetime-like数据。⽇期结束 |
periods | 整数型,⽣成周期数 |
freq | 字符型,默认’D’。频率串可以拥有倍数 |
tz | 字符型,返回本地时区,例’Asia/Hong_Kong.’ |
normalize | Bool,规范化时间 |
name | 字符型,时间索引名称 |
closed | {None, ‘left’, ‘right’},闭合区间选择 |
举例
1 #⽣成⼀个具有5个时间段,时⻓间隔3个⽉的时间序列
2 pd.date_range(start='1/1/2018', periods=5, freq='3M')
3 DatetimeIndex(['2018-01-31', '2018-04-30', '2018-07-31', '2018-10-31',
4 '2019-01-31'],
5 dtype='datetime64[ns]', freq='3M')
6 #⽣成⼀个具有5个时间段,时⻓间隔为1天的亚洲\东京时区时间序列
7 pd.date_range(start='1/1/2018', periods=5, tz='Asia/Tokyo')
8 >> DatetimeIndex(['2018-01-01 00:00:00+09:00', '2018-01-02 00:00:00+09:00',
9 '2018-01-03 00:00:00+09:00', '2018-01-04 00:00:00+09:00',
10 '2018-01-05 00:00:00+09:00'],
11 dtype='datetime64[ns, Asia/Tokyo]', freq='D')
关于时间的处理在数据分析中经常遇到,合理的使⽤时间转换能够减少统计⼯作量,关于时间序列的处
理,更详细请参考官⽅教
程:点这儿
3. DataFrame.sort_values()函数
介绍
沿着轴对数值进⾏排序
DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort',
na_position='last', ignore_index=False, key=None)
参数说明
参数 | 介绍 |
---|---|
by | 按照某⼀个标签索引排序 |
axis | {0,1},默认0,排序轴向 |
ascending | 默认True,升序排序。 |
Inplace | 默认False,不替换原数据 |
kind | 字符型,排序⽅式。quicksort’, ‘mergesort’, ‘heapsort’三种⽅式 |
na_position | {‘first’,’last’},NaN放置位置。 |
ignore_index | 默认False,不对索引进⾏重新排序。 |
举例
#⽣成数据源
df = pd.DataFrame({
'col1': ['A', 'A', 'B', np.nan, 'D', 'C'],
'col2': [2, 1, 9, 8, 7, 4],
'col3': [0, 1, 9, 4, 2, 3],
'col4': ['a', 'B', 'c', 'D', 'e', 'F'] })
df
>> col1 col2 col3 col4
0 A 2 0 a
1 A 1 1 B
2 B 9 9 c
3 NaN 8 4 D
4 D 7 2 e
5 C 4 3 F
#对数据按col1列的降序排列,nan值放置在头部
df.sort_values(by='col1', ascending=False, na_position='first')
>> col1 col2 col3 col4
3 NaN 8 4 D
4 D 7 2 e
5 C 4 3 F
2 B 9 9 c
0 A 2 0 a
1 A 1 1 B
4. DataFrame.apply()函数
介绍
沿着数据的轴应⽤函数,返回使⽤函数后的值。
DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwds)
参数说明
参数 | 介绍 |
---|---|
func | 函数,每列或⾏使⽤的函数 |
axis | 默认0,沿着列使⽤函数 |
raw | 默认False,确定⾏或者列是作为序列还是数组对象传递的。 |
result_type | {‘expand’,’reduce’,’broadcast’,None},默认None,结果返回⽅式。 |
args | 除了数组序列外,要传递给func的位置参数 |
举例
#⽣成⼀个数据源
df = pd.DataFrame([[4, 9]] * 3, columns=['A', 'B'])
df
>> A B
0 4 9
1 4 9
2 4 9
#对每列数据求和
df.apply(np.sum, axis=0)
>> A 12
B 27
dtype: int64
# 将每⼀⾏数据编程匿名函数lambda的返回值
df.apply(lambda x: [1, 2], axis=1)
>> 0 [1, 2]
. 1 [1, 2]
2 [1, 2]
dtype: object
apply是数据处理过程重要的函数,可以⾃定义不同的数据处理函数。
更多其他的⽤法参考官⽅⽂档:点这儿