Pandas
在数据预处理和数据分析方面的硬核干货,我们大致会说Pandas
计算交叉列表Pandas
将字符串与数值转化成时间类型Pandas
将字符串转化成数值类型Pandas
当中的交叉列表
Pandas
模块当中的crosstab()
函数,它的作用主要是进行分组之后的信息统计,里面会用到聚合函数,默认的是统计行列组合出现的次数,参数如下pandas.crosstab(index,columns,
values=None,
rownames=None,
colnames=None,
aggfunc=None,
margins=False,
margins_name='All',
dropna=True,
normalize=False)
corss_tab()
函数的作用,我们先导入要用到的模块并且读取数据集corsstab()
函数的例子,代码如下pd.crosstab(df['城市'],df['顾客类型'])
顾客类型会员普通
省份
上海124115
北京116127
四川2635
安徽2812
广东3036
.......
pd.crosstab(df['省份'],[df['顾客类型'],df["性别"]])
顾客类型会员普通
性别女性男性女性男性
省份
上海67575362
北京53635968
四川1791619
安徽171193
广东18121521
.....
pd.crosstab(df['省份'],df['顾客类型'],
colnames=['顾客的类型'],
rownames=['各省份名称'])
顾客的类型会员普通
各省份名称
上海124115
北京116127
四川2635
安徽2812
广东3036
crosstab()
方法当中的margin
参数,如下pd.crosstab(df['省份'],df['顾客类型'],margins=True)
顾客类型会员普通All
省份
上海124115239
北京116127243
.....
江苏181533
浙江119111230
黑龙江141731
All5014991000
margins_name
参数,如下pd.crosstab(df['省份'],df['顾客类型'],
margins=True,margins_name="汇总")
顾客类型会员普通汇总
省份
上海124115239
北京116127243
.....
江苏181533
浙江119111230
黑龙江141731
汇总5014991000
normalize
参数,如下pd.crosstab(df['省份'],df['顾客类型'],
normalize=True)
顾客类型会员普通
省份
上海0.1240.115
北京0.1160.127
四川0.0260.035
安徽0.0280.012
广东0.0300.036
.......
pd.crosstab(df['省份'],df['顾客类型'],
normalize=True).style.format('{:.2%}')
顾客类型会员普通
省份
上海12.4%11.5%
北京11.6%12.7%
四川26%35%
安徽28%12%
广东30%36%
.......
aggfunc
参数以及values
参数,代码如下pd.crosstab(df['省份'],df['顾客类型'],
values=df["总收入"],
aggfunc="mean")
顾客类型会员普通
省份
上海15.64873815.253248
北京14.77125914.354390
四川20.45613514.019029
安徽10.17589311.559917
广东14.75708318.331903
.......
np.sum
加总或者是np.median
求取平均值。round()
函数df_1=pd.crosstab(df['省份'],df['顾客类型'],
values=df["总收入"],
aggfunc="mean").round(2)
顾客类型会员普通
省份
上海15.6515.25
北京14.7714.35
四川20.4614.02
安徽10.1811.56
广东14.7618.33
.......
df=pd.DataFrame({'date':[1470195805,1480195805,1490195805],
'value':[2,3,4]})
pd.to_datetime(df['date'],unit='s')
02016-08-0303:43:25
12016-11-2621:30:05
22017-03-2215:16:45
Name:date,dtype:datetime64[ns]
df=pd.DataFrame({'date':[1470,1480,1490],
'value':[2,3,4]})
pd.to_datetime(df['date'],unit='D')
01974-01-10
11974-01-20
21974-01-30
Name:date,dtype:datetime64[ns]
pd.to_datetime()
方法pd.to_datetime('2022/01/20',format='%Y/%m/%d')
Timestamp('2022-01-2000:00:00')
pd.to_datetime('2022/01/1211:20:10',
format='%Y/%m/%d%H:%M:%S')
Timestamp('2022-01-1211:20:10')
Python
当中的时间日期格式化符号pd.to_datetime()
方法当中的errors
参数就可以派上用场,df=pd.DataFrame({'date':['3/10/2000','a/11/2000','3/12/2000'],
'value':[2,3,4]})
#会报解析错误
df['date']=pd.to_datetime(df['date'])
errors
参数的作用,代码如下df['date']=pd.to_datetime(df['date'],errors='ignore')
df
datevalue
03/10/20002
1a/11/20003
23/12/20004
NaT
,代码如下df['date']=pd.to_datetime(df['date'],errors='coerce')
df
datevalue
02000-03-102
1NaT3
22000-03-124
DataFrame
数据集,如下df=pd.DataFrame({
'string_col':['1','2','3','4'],
'int_col':[1,2,3,4],
'float_col':[1.1,1.2,1.3,4.7],
'mix_col':['a',2,3,4],
'missing_col':[1.0,2,3,np.nan],
'money_col':['1,000.00','2,400.00','2,400.00','2,400.00'],
'boolean_col':[True,False,True,True],
'custom':['Y','Y','N','N']
})
df.dtypes
string_colobject
int_colint64
float_colfloat64
mix_colobject
missing_colfloat64
money_colobject
boolean_colbool
customobject
dtype:object
df.info()
方法来调用,如下df.info()
<class'pandas.core.frame.DataFrame'>
RangeIndex:4entries,0to3
Datacolumns(total8columns):
#ColumnNon-NullCountDtype
----------------------------
0string_col4non-nullobject
1int_col4non-nullint64
2float_col4non-nullfloat64
3mix_col4non-nullobject
4missing_col3non-nullfloat64
5money_col4non-nullobject
6boolean_col4non-nullbool
7custom4non-nullobject
dtypes:bool(1),float64(2),int64(1),object(4)
memoryusage:356.0+bytes
df['string_col']=df['string_col'].astype('int')
df.dtypes
string_colint32
int_colint64
float_colfloat64
mix_colobject
missing_colfloat64
money_colobject
boolean_colbool
customobject
dtype:object
int32
类型,当然我们指定例如astype('int16')
、astype('int8')
或者是astype('int64')
,当我们碰到量级很大的数据集时,会特别的有帮助。df['string_col']=df['string_col'].astype('float')
df.dtypes
string_colfloat64
int_colint64
float_colfloat64
mix_colobject
missing_colfloat64
money_colobject
boolean_colbool
customobject
dtype:object
astype('float16')
、astype('float32')
或者是astype('float128')
df['mix_col']=df['mix_col'].astype('int')
pd.to_numeric()
方法以及里面的errors
参数,代码如下df['mix_col']=pd.to_numeric(df['mix_col'],errors='coerce')
df.head()
df.dtypes
string_colfloat64
int_colint64
float_colfloat64
mix_colfloat64
missing_colfloat64
money_colobject
boolean_colbool
customobject
dtype:object
float64
类型,要是我们想指定转换成我们想要的类型,例如df['mix_col']=pd.to_numeric(df['mix_col'],errors='coerce').astype('Int64')
df['mix_col'].dtypes
Int64Dtype()
replace()
方法将这些符号给替换掉,然后再进行数据类型的转换df['money_replace']=df['money_col'].str.replace('','').str.replace(',','')
df['money_replace']=pd.to_numeric(df['money_replace'])
df['money_replace']
01000.0
12400.0
22400.0
32400.0
Name:money_replace,dtype:float64
regex=True
的参数,代码如下df['money_regex']=df['money_col'].str.replace('[\\,]','',regex=True)
df['money_regex']=pd.to_numeric(df['money_regex'])
df['money_regex']
astype()
方法,对多个列一步到位进行数据类型的转换,代码如下df=df.astype({
'string_col':'float16',
'int_col':'float16'
})
df=pd.read_csv(
'dataset.csv',
dtype={
'string_col':'float16',
'int_col':'float16'
}
)
分享
点收藏
点点赞
点在看
文章转发自AI科技大本营微信公众号,版权归其所有。文章内容不代表本站立场和任何投资暗示。
Copyright © 2021.Company 元宇宙YITB.COM All rights reserved.元宇宙YITB.COM