pandas Dataframe操作

import pandas as pd

1 创建空Dataframe

df = pd.DataFrame(columns=('a', 'b', 'c'))
df
abc

2 添加一行Series数据

先创建Series

s1 = pd.Series({'a': 1, 'b': 2, 'c': 3})
s1
a    1
b    2
c    3
dtype: int64
s2 = pd.Series({'a': 4, 'b': 5, 'c': 6}, name='new')
s2
a    4
b    5
c    6
Name: new, dtype: int64

一定要用等号赋值才有效果

df = df.append(s1, ignore_index=True)  # Series没有name时,ignore_index=True
df
abc
0123
df = df.append(s2)
df
abc
0123
new456

3 获取列数据中某个值的索引

b列中值为4的index为new

df[(df['b'] == 5)].index[0]
'new'
len(df[(df['b'] == 4)].index)
0

如果没有这个值

len(df[(df['b'] == 100)].index)
0

4 选取某些列(行)

output = df.loc(axis=1)['a', 'c']  # axis=0选取行  loc通过标签索引
output
ac
013
new46
output = df.iloc(axis=1)[0:2]  # iloc通过下标索引
output
ab
012
new45

当只选了一列(行)时,返回Series

将一列的值转化为列表

df.loc(axis=1)['a'].values.tolist()
[1, 4]

5 对列数据统一处理

df['a'] = df['a'].apply(lambda x: x*4)  # 可以使用其它函数
df
abc
0423
new1656

6 使用索引

6.1 根据下标索引

df.iloc[0, 0]
4
df.iloc[0, 0] = df.iloc[1, 0] + 1
df
abc
01723
new1656

6.2 根据标签索引

df.loc['new', 'a']
16

6.3 根据下标和标签索引

df.loc[0, 'a']
17

7 修改索引

7.1 设置列标签

df.columns = ['a', 'c', 'b']
df
acb
01723
new1656

7.2 设置index

df.index = [2, 1]
df
acb
21723
11656

7.3 重设index(从0开始)

df = df.reset_index(drop=True)  # drop=True表示不保留原来的index
df
acb
01723
11656

7.4 按照某一列的值排序

df = df.sort_values(by='a')  # 按照a列的值从小到大排序
df
acb
11656
01723

8 滑动窗口rolling

对某一列进行滑动窗口操作
先添加一行数据

df = df.append(pd.Series({'a': 4, 'b': 7, 'c': 8}), ignore_index=True)
df
acb
01656
11723
2487
window = 2  # 窗口大小为2
output = df['c'].rolling(window).mean()  # 取平均值  标签默认取窗口右端
output
0    NaN
1    3.5
2    5.0
Name: c, dtype: float64
window = 3
output = df['c'].rolling(window).mean(center=True)  #标签取窗口中间
output
0    NaN
1    5.0
2    NaN
Name: c, dtype: float64

9 计算标准差

每一列计算标准差

df.std(axis=0)
a    7.234178
c    3.000000
b    2.081666
dtype: float64

10 获取行数和列数

df.shape[0]  # 行数
3
df.shape[1]  # 列数
3

11 参考资料

Pandas 根据值查索引
Pandas中loc和iloc函数用法详解(源码+实例)
pandas: transfer Int64Index to int 将Int64Index转换为int类型
python——修改Dataframe列名的两种方法
如何将dataframe单列的int类型转化为str类型
Pandas对一列做运算
pandas.DataFrame.reset_index
Is it possible to append Series to rows of DataFrame without making a list first?
如何获取Dataframe的行数和列数
Pandas把dataframe或series转换成list
Pandas的Series的创建
pd.Series转list并读取值
Pandas入门之rolling滑动窗口
Pandas DataFrame.std()函数

本文最新版本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酒桶在你野区

感谢支持!????

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值