pandas的df操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas的df操作相关的知识,希望对你有一定的参考价值。

参考技术A 2018/04/21
记录一些在使用pandas_udf时候学习的一些简单pandas操作。

1、自己创建新的df。

所以,初始化的时候,还是要先创建Series,不过具体还可以看看这个官网部分的初始化。
file:///E:/Maybe/4.%E5%AD%A6%E4%B9%A0%E6%9D%82%E8%AE%B0/pandas/pandas/html/dsintro.html#dataframe
但是实际在用修饰器的时候,还是出错了。
ArrowNotImplementedError: No cast implemented from string to int32
不明白哪里出错了。
问题找到了,因为修饰器的地方,指定了表结构,但是我构造DF的时候,使用的字典的方式,结果导致这里构造的DF跟修饰器上的不一样。这个东西就比较尴尬了。
就是字典构造的时候他把这个列顺序给改了,虽然写的时候是按照自己键值顺序写的,但是实际穿进去的时候,就不一样了。。这就比较尴尬。我记得字典是有这个特性的。但是想不起来是在哪看到的了。

pandas 基本操作

1.

import pandas as pd
import numpy as np

df1 = pd.DataFrame(np.arange(12).reshape(3, 4))
df2 = pd.DataFrame(np.arange(20).reshape(4, 5))
print(df1)
print(df2)
print(df1.add(df2, fill_value=1))  # 加运算   fill_value指定填充值,未对齐的数据将和填充值做运算
print(df1.sub(df2, fill_value=1))  # 减运算   fill_value指定填充值,未对齐的数据将和填充值做运算
print(df1.mul(df2, fill_value=1))  # 乘运算   fill_value指定填充值,未对齐的数据将和填充值做运算
print(df1.div(df2))  # 除运算   fill_value指定填充值,未对齐的数据将和填充值做运算
print(df1.truediv(df2))  # 除运算   fill_value指定填充值,未对齐的数据将和填充值做运算
print(df1.floordiv(df2))  # 向下取整除法   fill_value指定填充值,未对齐的数据将和填充值做运算
print(df1.mod(df2))  # 模运算   fill_value指定填充值,未对齐的数据将和填充值做运算
print(df1.pow(df2))  # 幂运算   fill_value指定填充值,未对齐的数据将和填充值做运算


DataFrame = pd.DataFrame(np.arange(20).reshape(4, 5))
DataFrame = pd.DataFrame([np.random.randn(3), [1., 2., np.nan], [np.nan, 4., np.nan], [1., 2., 3.]])
DataFrame = pd.DataFrame(‘key1‘: [‘a‘, ‘b‘, ‘a‘, ‘b‘, ‘a‘, ‘b‘, ‘a‘, ‘a‘],
                          ‘key2‘: [‘one‘, ‘one‘, ‘two‘, ‘three‘, ‘two‘, ‘two‘, ‘one‘, ‘three‘],
                          ‘data1‘: np.random.randn(8), ‘data2‘: np.random.randn(8))
print(DataFrame)
print(DataFrame.head(5))  # 前面几个数据
print(DataFrame.index)  # 获取索引
print(DataFrame.values)  # 获取数据
print(DataFrame[‘drugName‘])  # 切片
DataFrame[‘G‘] = 4  # 增加列
del (DataFrame[‘G‘])  # 删除列
print(DataFrame.loc[0:2, ‘id‘:‘drugName‘])  # 第一个参数索引行,第二个参数是列,基于标签名的索引
print(DataFrame.iloc[0:2, 0:2])  # 第一个参数索引行,第二个参数是列,基于索引编号来索引
print(DataFrame.ix[0:2, ‘id‘:‘drugName‘])  # 第一个参数索引行,第二个参数是列,索引和标签都可以
print(np.abs(DataFrame))   # 绝对值
print(DataFrame.apply(lambda x: x.max(), axis=0))  # 使用apply应用行或列数据 axis=0,方向是列 axis=1,方向是行
print(DataFrame.applymap(lambda x: ‘%.2f‘ % x))  # 使用applymap应用到每个数据
print(DataFrame.sort_index(axis=1, ascending=True))  # 排序默认使用升序排序,ascending=False 为降序排序  axis=1,行升序
print(DataFrame.sort_values(by=1, ascending=True))  # 根据某个唯一的列名进行排序,by=‘column name‘ 如果有其他相同列名则报错. ascending=False 为降序排序
print(DataFrame.isnull())   # 判断是否存在缺失值 True,False
print(DataFrame.dropna(axis=1))  # 丢弃缺失数据,根据axis轴方向,丢弃包含NaN的行或列,axis=0,方向是行 axis=1,方向是列
print(DataFrame.fillna(100))  # 填充缺失数据
print(DataFrame.sum(axis=0))  # 求和  axis=0 按列统计,axis=1按行统计  skipna 排除缺失值, 默认为True
print(DataFrame.max(axis=0))  # 最大值  axis=0 按列统计,axis=1按行统计  skipna 排除缺失值, 默认为True
print(DataFrame.min(axis=0))  # 最小值  axis=0 按列统计,axis=1按行统计  skipna 排除缺失值, 默认为True
print(DataFrame.mean(axis=0))  # 平均值  axis=0 按列统计,axis=1按行统计  skipna 排除缺失值, 默认为True
print(DataFrame.count(axis=0))  # 非NA值的个数  axis=0 按列统计,axis=1按行统计  skipna 排除缺失值, 默认为True
print(DataFrame.std(axis=0))  # 方差  axis=0 按列统计,axis=1按行统计  skipna 排除缺失值, 默认为True
print(DataFrame.cumsum(axis=0))  # 累计和  axis=0 按列统计,axis=1按行统计  skipna 排除缺失值, 默认为True
print(DataFrame.mad())  # 平均绝对差  axis=0 按列统计,axis=1按行统计  skipna 排除缺失值, 默认为True
print(DataFrame.cumprod())  # 累计积  axis=0 按列统计,axis=1按行统计  skipna 排除缺失值, 默认为True
print(DataFrame.idxmin())  # 最小值索引  axis=0 按列统计,axis=1按行统计  skipna 排除缺失值, 默认为True
print(DataFrame.idxmax())  # 最大值索引  axis=0 按列统计,axis=1按行统计  skipna 排除缺失值, 默认为True
print(DataFrame.groupby([‘key1‘, ‘key2‘]).mean())  # 根据字段分组  axis=0 按列统计,axis=1按行统计  skipna 排除缺失值, 默认为True
print(DataFrame.groupby([‘key1‘, ‘key2‘]).size())  # 每个分组的元素个数  axis=0 按列统计,axis=1按行统计  skipna 排除缺失值, 默认为True
for i, j in DataFrame.groupby([‘key1‘, ‘key2‘]):  # 迭代对象
print(list(DataFrame.groupby([‘key1‘, ‘key2‘])))   # 转列表
print(dict(list(DataFrame.groupby([‘key1‘, ‘key2‘]))))   # 转字典
print(DataFrame.groupby(‘key1‘).agg(lambda df: df.max() - df.min()))  # agg(func) func的参数为groupby索引对应的记录
print(DataFrame.groupby(‘key1‘).agg([‘mean‘, ‘std‘, ‘count‘]))  # agg(func) func的参数为groupby索引对应的记录
print(DataFrame.describe())  # 详细信息  skipna 排除缺失值, 默认为True
count   4.000000   4.000000   4.000000   4.000000   4.000000  该列(行)非NA值的个数
mean    7.500000   8.500000   9.500000  10.500000  11.500000  该列(行)的均值
std     6.454972   6.454972   6.454972   6.454972   6.454972  该列(行)的方差
min     0.000000   1.000000   2.000000   3.000000   4.000000  该列(行)的最小值
25%     3.750000   4.750000   5.750000   6.750000   7.750000  该列(行)的上四分位数
50%     7.500000   8.500000   9.500000  10.500000  11.500000  该列(行)的非NA值的平均数
75%    11.250000  12.250000  13.250000  14.250000  15.250000  该列(行)的下四分位数
max    15.000000  16.000000  17.000000  18.000000  19.000000  该列(行)的最大值

  

  

以上是关于pandas的df操作的主要内容,如果未能解决你的问题,请参考以下文章

pandas一些常用函数以及操作的使用和理解(持续更新)

pandas 基本操作

pandas高级操作总结

Pandas高级教程之:GroupBy用法

Pandas操作excel

Pandas操作excel