pandas DataFrame

DataFrame 二维,Series容器

一、创建DataFrame

# 方法一
pd.DataFrame(data=None, index=None, columns=None)
# data: array-like, 数据
# index: array-like, 行索引 axis=0
# columns: array-like, 列索引 axis=1

# 方法二(字典)
pd.DataFrame({'name': ['tom', 'alex'], 'age': [24, 34], 'hometown': ['xz', 'bj']}, index=list('ab'))
# 字典的key是列索引

pd.DataFrame([{'name': 'tom', 'age': 24, 'hometown': 'xz'}, {'name': 'alex', 'age': 34},
            {'name': 'bob', 'hometown': 'wx'}])
# 每个字典是一条行数据
# 没有的数据用NaN表示

二、DataFrame的基础属性

arr1.shape    # 行数 列数
arr1.dtypes   # 列数据类型
arr1.ndim     # 维度  
arr1.index    # 行索引
arr1.columns  # 列索引
arr1.values   # 二维ndarry的数组

三、DataFrame整体情况查询

arr1.head(n)     # 显示头部几行,默认5行
arr1.tail(n)     # 显示尾部数据几行,默认5行
arr1.info()      # 相关信息浏览:行数、列数,列索引,列非空值个数,列类型,内存占用
arr1.describe()  # 快速综合统计结果:计数,均值,标准差,最大值,四分位数,最小值

四、排序

arr1.sort_values(by="列索引", ascending=True)
# ascending=True为升序,值为False为降序
# 需要创建一个新的变量

五、索引和切片

1、原始
a、方括号写数组,表示取行,对行进行操作
b、方括号写字符串,表示取列,对列进行操作

2、loc
通过标签获取数据
语法
arr.loc[行标签, 列标签]
# 用法和numpy的索引和切片相似(连续,不连续)
# 切片的时候,顾尾
例子
arr3.loc['A', 'd']
arr3.loc['A', ['a', 'd']]    
arr3.loc['A': 'C', ['a', 'd']]     

3、iloc
通过位置获取数据
语法
arr.iloc[行位置, 列位置]
# 用法和numpy的索引和切片相似(连续,不连续)
# 切片的时候,顾头不顾尾
例子
arr3.iloc[0, 2]
arr3.iloc[1:3, [2, 4]]

4、布尔索引
a、不符合布尔条件的使用NaN代替
b、与 $
arr3[(arr3 > 5) & (arr3 < 10)]
b、或 |
arr3[(arr3 < 5) | (arr3 > 10)]
# 注意: 不同的条件之间,需要用括号括起来

注意:df[列索引][布尔索引] = 值

设置布尔索引为True的值

六、常用字符串方法

contains    # 返回表示各个字符串是否含有指定模式的布尔型数组
len         # 计算各个字符串的长度
lower、upper # 转换大小写,相当于各个元素执行x.lower()或x.upper()
replace     # 用指定字符串替换找到的模式
split       # 根据分隔符或正则表达式对字符串进行拆分

例子
arr[列索引].str.len()

七、缺失数据的处理

1、判断数据是否为NaN
pd.isnull(数据)
pd.isna(数据)

pd.notna(数据)
pd.notnull(数据)

2、处理方式
a、方式一,填充NaN
filna(value=None, inplace=False)
# inplace False 需要定义一个变量,接收结果, True不需要,在原地上修改
例子
arr1['age'] = arr1['age'].fillna(arr1['age'].mean())    # 填充平均值

b、方式二,删除NaN(一般不推荐使用)
arr1.dropna(axis=0, how="any", inplace=False)
# axis 行数据
# any 行数据含有一个NaN 删除, all 行数据全都是NaN 删除
# inplace False 需要定义一个变量,接收结果, True不需要,在原地上修改
例子:
arr1 = arr1.dropna(axis=0, )

c、处理0
arr[arr==0] = np.nan
注意:0不是必须要处理的数据

 八、pandas常用统计方法

mean()      # 求均值 df['age'].mean()
meidan()    # 中间值
max()       # 最大值
min()       # 最小值

 九、去重

df[columns索引].unique()
原文地址:https://www.cnblogs.com/wt7018/p/11970710.html