公众号:uncle39py

V1

2022/01/18阅读:42主题:默认主题

数据分析 Pandas 第二篇

上一篇Pandas讲解了其主线功能:读取数据、数据整体概览、提取目标数据、异常值处理。

这一篇把遗漏的散乱的知识点罗列出来以供查找。先点一下,需要的时候能找到方向。

df3.drop_duplicates(subset=[0],keep='last')
#1、默认所有值都重复才认定为重复,可以用subset参数指定子集,以子集重复就认定重复;
# 默认保留哪一个值,可以设置keep为last、first

#2、df.values的值就是array数组(numpy的地盘)

df.rename(columns={'order':'new_order'}) #3、对列改名字

df.reset_index() #4、重置索引
#5、替换(联想excel中的替换全部)
df.replace(17,0,inplace=True#一对一的值替换,前面17是原值,后面0是替换后的值。
df.replace([1720],0,inplace=True#多对一的值替换
df.replace({'a':'A','b':'B'},inplace=True#多对多的值替换
#6、排序
df2.sort_values(by='全指金融',ascending=True
#排序,按照指定列来排序,ascending指明升降序。

df1.sort_values(by='全指金融',ascending=True,na_position='last')  
#na_position='last'(或者first)把缺失值放在最后面
#by=['全指金融','xxx']按多列排序
df4['industry_sw'].value_counts()
#7 统计指定列(如行业)里面的值出现次数。显示为“行业 次数”
#(显示:机械设备    328 /n化工      325/n医药生物    293)

df4['industry_sw'].unique()  
#8 取指定列的里面不重复的单一值,返回一个array
#显示为:array(['银行', '房地产', '医药生物', '公用事业', '综合', dtype=object)


df4['name'].isin(['平安银行']) 
#9 判断指定列name里面的值是否在给定的list里面,返回该列所有单元格的布尔值。
df4[df4['name'].isin(['平安银行'])] # 筛选出布尔索引为True的所有行

df4[df4['industry_sw'].isin(['银行'])]
#例子:查看行业(列)为银行的所有个股的信息
#两列相加、字符串拼接等(EXCEL公式中常用,比如“=A1&A3”等)
df['A1']+df['A3']

# 遇到时间字段的一些常用的互换方法
from datetime import datetime
now=datetime.now()
str_time=now.strftime('%Y-%m-%d'#把datetime类型转成字符串

from dateutil.parser import parse
now = parse(str_time)   # 把字符串类型解析成datetime类型


# 时间索引:首先必须先把列转为datetime64类型,然后时间列设置为索引,取值就可以很方便,比如
df['2018'#所有%Y-%m-%d中,年含2018的都可以取出来
df['2018-09':'2019-01'# 也支持序列
#apply函数
# 自己定义一个函数func,比如传入x,return x加1
df.apply(func) #将函数作用于df里面的每一个值,每一个值加1

数据运算:

图片(完整内容请移步公众号中查阅:uncle39py)

以下为了解知识点先有个印象,具体使用时具体查

#区间划分cut()方法:

bins=[0,20,60,100]   
# 传入一组整数,可以将所有数据按照这个区间进行切割,不在这个范围内的数据就丢弃掉
pe=pd.cut(df4['pe_ttm'],[0,20,60,100],labels=['价值','成长','泡沫'])
#cut的参数:对哪一列进行区间切分;切分的标准;切分后每个区间的label;返回一个Series对象。


#qcut()方法:按照分位数进行划分
pd.qcut(df4['pe_ttm'],5).value_counts()
#会将数量5等分,及其区间会计算出来,比如以下这3600条数据5等分后的结果:
(-7393.97513.492]    720
(25.24538.696]       720
(66.4957476.881]     720
(13.49225.245]       719
(38.69666.495]       719
Name: pe_ttm, dtype: int64
df.insert()  # 插入新的行或列
df.T # 行列装置

#长宽表转换涉及方法(有点复杂,用到在百度):
#df.stack()/df.unstack()
#df.melt()
#df.pivot_table()(数据透视表 )

分类:

后端

标签:

Python

作者介绍

公众号:uncle39py
V1