Pandas学习笔记—001
更多博客: MyBlog
1. 数据类型
Series:带标签的一维数组
DataFrame:带标签的,大小可变的,二维异构表格
import numpy as np
import pandas as pd
# 生成Series
s = pd.Series([1, 3, 5, np.nan, 6, 8])
print(s)
0 1.0
1 3.0
2 5.0
3 NaN
4 6.0
5 8.0
dtype: float64
2. 使用技巧
1. sort_indedx和sort_value
sort_index(axis=0, level=None, ascending=True, inplace=False, kind=‘quicksort’, na_position=‘last’, sort_remaining=True, ignore_index: bool = False,)
axis:0按行名排序,1按列名排序
ascending:默认True升序排列;False降序排列
inplace:默认False,否则排序之后的数据直接替换原来的数据框
kind:排序方法,{‘quicksort’, ‘mergesort’, ‘heapsort’}, default ‘quicksort’。似乎不用太关心
na_position:缺失值默认排在最后{“first”,“last”}
sort_values(by, axis=0, ascending=True, inplace=False, kind=“quicksort”, na_position=“last”, ignore_index=False)
by: str or list of str;如果axis=0,那么by=“列名”;如果axis=1,那么by=“行名” # 必须给出参数df = pd.DataFrame({'b':[1,2,3,2],'a':[4,3,2,1],'c':[1,3,8,2]},index=[2,0,1,3]) b a c 2 1 4 1 0 2 3 3 1 3 2 8 3 2 1 2 按b列升序排序: df.sort_values(by='b') # 等同于df.sort_values(by='b',axis=0) 先按b列降序,再按a列升序排序: df.sort_values(by=['b','a'],axis=0,ascending=[False,True]) # 等同于df.sort_values(by=['b','a'],axis=0,ascending=[False,True]) 按行3升序排列: df.sort_values(by=3,axis=1) # 必须指定axis=1 按行3升序,行0降排列: df.sort_values(by=[3,0],axis=1,ascending=[True,False])
2. 对于无效数据的处理
空值:在pandas中的空值是""
缺失值:在dataframe中为nan或者naT(缺失时间),在series中为none或者nan即可
相关函数: df.dropna()、df.fillna()、df.isnull()、df.isna()函数: df.dropna(axis=0, how=‘any’, thresh=None, subset=None, inplace=False)
删除表中全部为NaN的行: df.dropna(axis=0,how=‘all’)
删除表中含有任何NaN的行: df.dropna(axis=0,how=‘any’)
删除表中全部为NaN的列: df.dropna(axis=1,how=‘all’)
删除表中含有任何NaN的列: df.dropna(axis=1,how=‘any’)
thresh(int): axis中至少有int个非缺失值,否则删除
subset: array-like, optional,Labels along other axis to consider, e.g. if you are dropping rows these would be a list of columns to include.
函数: df.fillna(self, value=None, method=None, axis=None, inplace=False, limit=None, downcast=None)
method{‘backfill’, ‘bfill’, ‘pad’, ‘ffill’, None}, default None 说明用前面数据‘ffill’/'pad’替换后面NaN数据 ‘backfill’/‘bfill’则相反
ne}, default None 说明用前面数据‘ffill’/'pad’替换后面NaN数据 ‘backfill’/'bfill’则相反