pandas 使用

drop_duplicates:去除重复项

1
2
DataFrame.drop_duplicates(subset=None, keep='first', inplace=False)

这个drop_duplicate方法是对DataFrame格式的数据,去除特定列下面的重复行。返回DataFrame格式的数据。

subset : column label or sequence of labels, optional
  用来指定特定的列,默认所有列
  keep : {‘first’, ‘last’, False}, default ‘first’
  删除重复项并保留第一次出现的项
  inplace : boolean, default False
  是直接在原来数据上修改还是保留一个副本

Pandas Dataframe增、删、改、查、去重、抽样基本操作

pandas的索引函数主要有三种:
loc 标签索引,行和列的名称
iloc 整型索引(绝对位置索引),绝对意义上的几行几列,起始索引为0
ix 是 iloc 和 loc的合体
at是loc的快捷方式
iat是iloc的快捷方式

https://www.cnblogs.com/zknublx/p/9645204.html

dataframe一列成多列

场景:一列中的值出现 1|2|3|56,这样用|分割的值,需要将其转换成4列。

2、操作:

names=df[‘names’].str.split(‘|’,expand=True)#多名字分列

names.columns=[‘ids0’,’ids1’,’ids2’,’ids3’,’ids4’,’ids5’,’ids6’,’ids7’]#

df=df.join(names)

其中names字段的列是包含|分割的值,最后将多列合并会原dataframe里。

pandas应用函数,它将多个值返回到pandas dataframe中的行

apply 中函数返回一个Series或列表
如返回:pd.Series([e,f,g], index=[‘a’, ‘b’, ‘c’])

https://codeday.me/bug/20180820/223407.html

https://stackoverflow.com/questions/23690284/pandas-apply-function-that-returns-multiple-values-to-rows-in-pandas-dataframe

groupby

1.groupby(“id”).resample(“M”).agg(“mean”)会报错:Exception: Column(s) num_temp selected 并不知道原因
但可以这样

1
2
3
4
5
df.set_index('date').groupby('name')['ext price'].resample("M").sum()
df[["ext price", "quantity", "unit price"]].agg(['sum', 'mean'])
df.agg({'ext price': ['sum', 'mean'], 'quantity': ['sum', 'mean'], 'unit price': ['mean']})

python处理数据的风骚操作pandas 之 groupby&agg

2.这些操作对数值型的列自动进行计算,非数值型的会去掉
如果不对原始数据作限制的话,聚合函数会自动选择数值型数据进行聚合计算。如果不想对年龄计算平均值的话,就需要剔除改变量:
student.drop(“age”).groupby(“id”).mean()

“”统计值””

1
2
3
4
5
6
7
8
9
10
11
def stats(x,time_interval):
return pd.Series([x.count(),x.min(),x.idxmin(),
x.quantile(.25),x.median(),
x.quantile(.75),x.mean(),
x.max(),x.idxmax(),
x.mad(),x.var(),
x.std(),x.skew(),x.kurt()],
index = [time_interval+'_Count',time_interval+'_Min',time_interval+'_Whicn_Min',
time_interval+'_Q1',time_interval+'_Median',time_interval+'_Q3',time_interval+'_Mean',
time_interval+'_Max',time_interval+'_Which_Max',time_interval+'_Mad',
time_interval+'_Var',time_interval+'_Std',time_interval+'_Skew',time_interval+'_Kurt'])

Python数据分析之pandas学习

3.对分组进行迭代:
for name, group in df.groupby(‘key1’):
print (name)
print (group)

python/pandas数据挖掘(十四)-groupby,聚合,分组级运算

Pandas按日期对状态进行汇总统计
《Pandas Cookbook》第10章 时间序列分析1. Python和Pandas日期工具的区别2. 智能切分时间序列3. 只使用适用于DatetimeIndex的方法4. 计算每周的犯罪数5.

详解

pandas聚合和分组运算——GroupBy技术(1)

时间序列划分时间间隔

在进行数据操作时, 经常会碰到基于同一列进行错位相加减的操作, 即对某一列进行向上或向下平移(shift).
我需要计算网络数据包之间的时间间隔,使用pandas的实现过程如下。

例如 a = ​[‘2011-08-10 03:56:10’, ‘2011-08-10 03:56:20’, ‘2011-08-10 03:56:40’, ‘2011-08-10 03:56:50’], 时间字符串列表。

import pandas as pd​

import numpy as np​

  1. 将a转换为Series结构, b = ​pd.Series(a)

  2. 将b转换为DateTime数据类型, c = pd.to_datetime(b)

  3. 计算时间间隔TimeDelta, d = (c - c.shift()​).dropna()

  4. 计算间隔了多少秒(将TimeDelta类型数据转换为基于秒的整数), e = d.map(lambda x: x/np.timedelta64(1, ‘s’))

* Pandas计算出的时间间隔数据的类型是np.timedelta64, 不是Python标准库中的timedelta类型,因此没有total_seconds()函数,需要除以np.timedelta64的1秒来计算间隔了多少秒。

也可以将Pandas的Series转换成numpy的ndarray后计算间隔的秒数:

  1. b = np.array(a)

  2. c = np.diff(b)/np.timedelta64(1, ‘s’)​

*numpy的diff()函数实在是太赞了。​

使用Pandas获得数据的时间间隔序列
python对列进行平移变换(shift)

pandas 时间序列 之日期范围、频率及移动中图
!频率选项

##

1
2
3
print(‘---------获取2013年的数据-----------‘)
print(df[‘2013‘].head(2)) # 获取2013年的数据
print(df[‘2013‘].tail(2)) # 获取2013年的数据

Pandas日期数据处理:如何按日期筛选、显示及统计数据

滑窗,Rolling 和 Expanding 待研究

移动窗口函数

一种用于时间序列操作的重要用法,是使用滑窗(sliding windown)或呈指数降低的权重(exponentially decaying weights),来对时间序列进行统计值计算和其他一些函数计算。 这个对于消除噪声或有缺陷的数据是很有用的。这里我们称之为Moving Window Functions(移动窗口函数),不过其中也包括了不适用固定长度窗口的函数(functions without a fixed-length window),比如指数加权移动平均数(exponentially weighted moving average)。和其他一些统计函数以后,这些函数也会自动无视缺失值。

作者:蜘蛛侠不会飞
来源:CSDN
原文:https://blog.csdn.net/qq_40587575/article/details/81205873

Rolling 和 Expanding

多级索引

给妹子讲python-S02E16多级索引Pandas的取值、分片与运算

总结

Pandas:让你像写SQL一样做数据分析(一)

value_counts()

是计数,统计所有非零元素的个数,默认以降序的方式输出Series。

##describe
df.describe()
describe函数总结数据集分布的中心趋势,分散和形状,不包括NaN值

坚持原创技术分享,您的支持将鼓励我继续创作!