这不是教程,这是个人总结,没有阅读体验。
basic- series可以用list创建,而且series其实就是给ndarray对象加上一层索引。所以在元素替换的时候可以等于list。
- 注意:即使指定了索引,仍然可以用0,1,2,3..作为索引获取数据。但是不规范,应该使用loc和iloc.
- 注意:切片时不是数字的索引包含结尾。
- 指定name便于合并到dataframe
- 查看dtype,修改astype
- values获取到值。
- to_list相对于values/to_numpy的不好之处在于不再能使用numpy的array的方法了.比如s.values.nonzero()查看非零元素。
- s.repeat()和s.reset_index和s.index方便构造新的series。
- 注意:series只有一列,不像dataframe那样,存在set_index,所以直接设置index即可。
- series和dict很像,也有迭代模式。s.items(),s.keys().转为字典用s.to_dict()
- 注意s.count()是不把空值计算在内的,查看元素个数s.size,查看非空元素个数s.count()。
- 在pandas的函数中要特别注意对空值的处理和是否本地化改变数据。比如groupby就会:
- 查看不重复元素及不重复元素个数s.unique(),s.nunique()。
- 查看重复元素flag=s.duplicated(keep='first')返回布尔值,s[flag]返回重复值,s.drop_duplicates()返回去除重复值后的元素.
- sort_values,sort_index排序
- 选择前n个最大的元素和选择前n个最小的元素:nlargest,nsmallest。
- s.round(2)保留小数,s.quantile([0.25,0.5,0.75,0.8])求百分位数
- 两个series之间:s1.corr(s2)求相关性,s1.cov(s2)求协方差。
- 和它自己s.diff(2)、s.diff(-2)做差.大于0,当前元素减去上面元素,小于0,减去下面元素。pct_change:垂直方向相减求比例.
- s.shift就是平移,大于0,向上平移,小于0,向下平移。仔细看图中nan出现位置:
- 分箱技术:pd.cut(dfd['a'],bins=[0,59,79,100],labels=['不及格','不错','优秀'])
- cummax:从第一行开始截止当前行的最大值。cummin
- cumprod:对每一行实现累乘;cumsum对每一行实现累加。
- 其中和它自己的还有rolling,rolling可用于series也可用于dataframe:
- s.rolling(3).sum();s.rolling(3).agg(lambda x:sum(x))。
- 去除计算产生的nan的方法就是“有多少算多少”,s.rolling(3,min_peroids=1).sum()。
- center参数默认为False,rolling从当前元素往上筛选;center=True则以当前元素为中心,从两个方向进行筛选。
- pandas本身诞生在金融领域,非常擅长对时间操作。
- 创建一个时间序列:amount=pd.series([100,100,100,100],index=pd.DatetimeIndex(["2020-1-1',"2020-1-3","2020-1-4","2020-1-6"])),然后amount.rolling("3D").sum()
- asfreq!
- append用于合并两个字段相同的dataframe或则series,但是已经被pd.concat取代了。
- pd.concat([df1,df2])用于合并也可用于追加。还可以ex_res.loc[ex_res.size] = ['c1','c2']方式追加。
- 两个series计算新series:s1.combine(s2,func=lambda a,b: a if a>b else b),长度不一致也无妨。
- s1.update(s2),用s2对应元素替换掉s1,如果s2为空,则保留s1.对s1本身操作,没有返回值。
- 其中:s3=s1.combine(s2,func=lambda a,b:a if pd.notna(a) else b),combine有返回值。
- 无论update还是combine都以s1为准,类似于sql中left join.
- series和pandas都是针对索引进行操作。
- 设置二级以上索引df.set_index(['姓名','科目'])
- unstack二级索引的series就是把series转化为Dataframe,并且columns和index都有名字,可用rename_axis(columns=None)来重新命名.
- series中rename,reindex是专用于改变索引的,目前对改变索引没想法。
- map和apply差不多,但是apply只能接受函数(apply可以接受函数的参数)。map可以接受字典。
- 聚合那么针对的就是数值类型,s.agg(['min','max','mean'])
- replace通过指定一个字典,将series对象里面的元素进行替换。和map里面指定字典类似。
- s.fillna(),s.dropna()
- s.drop(['a','c'])指定索引删除某些元素
- isna,isnull,notna,notnull
- isin,between
- s.memory_usage



