Python pandas DataFrame操作

官方文档地址: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html

# coding=utf-8

import pandas as pd
import numpy

####### 创建df
dic = {
    'name': ['zhangsan', 'lisi'],
    'score': [80, 90]
}
df = pd.DataFrame(dic)

# 生成随机数填充的一个df
df = pd.DataFrame(numpy.random.randint(0, 100, size=(10, 4)), columns=list('ABCD'))

df = pd.DataFrame([['zhangsan', 80], ['lisi', 90]], columns=['name', 'score'])

########### 显示

print(df)
#        name score
# 0  zhangsan    80
# 1      lisi    90
print(df.head(n=1)) # 开头第1行
print(df['score'][0]) # 80 分数列的第一行

# 获取行数
print(len(df), df['name'].count(), df.count()['name'])  # 输出2 2 2

# 获取其中部分列 或者重新设置列顺序
print(df[['score', 'name']])


########### 修改
# 修改列名
df.columns = ['Name', 'Score']

# 修改行index
df.index = range(2, len(df) + 2)
print(df)
#       Name Score
# 2  zhangsan    80
# 3      lisi    90

# 添加行 ignore_index后index会重新编号
df = df.append({
    'Score': 100,
    'Name': 'xiaoming'
}, ignore_index=True)
print(df)
#        Name Score
# 0  zhangsan    80
# 1      lisi    90
# 2  xiaoming   100

###   统计运算
#axis=1表示计算每行的平均值 否则是每列(默认)
print(df['Score'].mean()) # 90.0
其他统计函数 参考本文最后

#### 切片
[], loc, iloc, at, iat, ix

df[1:5] 第1至第5行(不包含)
df[['Score']] 选择列

data.loc[1:5, ['Score', 'Name']] 选择index>=1 and index<=5的行

loc是根据值, iloc是根据第几行,而不是里面的值

# 以下两种输出一样
print(df[df['Score']>=90]['Name'])
print(df.loc[df['Score']>=90, 'Name']) # 性能更高


####    类似sql 筛选 groupby join UNION
https://pandas.pydata.org/pandas-docs/stable/comparison_with_sql.html

#### 重新采样
tmp = df.resample('30S').mean()  30秒重新采样 并用这段时间的平均值填充
填充方法还有bfill() ffill等

类似mean,其他的统计函数还有
count 非 NA 值的数量
describe 针对 Series 或 DF 的列计算汇总统计
min , max 最小值和最大值
argmin , argmax 最小值和最大值的索引位置(整数)
idxmin , idxmax 最小值和最大值的索引值
quantile 样本分位数(0 到 1)
sum 求和
mean 均值
median 中位数
mad 根据均值计算平均绝对离差
var 方差
std 标准差
skew 样本值的偏度(三阶矩)
kurt 样本值的峰度(四阶矩)
cumsum 样本值的累计和
cummin , cummax 样本值的累计最大值和累计最小值
cumprod 样本值的累计积
diff 计算一阶差分(对时间序列很有用)
pct_change 计算百分数变化

猜你喜欢

转载自blog.csdn.net/langouster/article/details/89919365