python not in range1002无标题_Python中偶尔遇到的细节疑问(一):去除列名特殊字符、标准差出现nan、切片索引可超出范围、range步长、众数...
1. Pandas讀取csv或excel數(shù)據(jù)時(shí),很可能遇到的columns中,列名會(huì)帶有特殊字符,例如:空格、
、、雙空格、引號(hào)等等,如果不想手動(dòng)修改的話,可以df.rename()來解決。
df =pd.read_excel(data_path)
df_= df.rename(columns=lambda x: x.replace(" ","").replace(' ','').replace(" ","").replace(r"","").replace(r"",""))
如果還有其他的字符,也可以類似解決。
2.python計(jì)算標(biāo)準(zhǔn)差時(shí),出現(xiàn)nan:這個(gè)原因可能是原始數(shù)據(jù)都是nan;
但是更有可能是求解std時(shí)參數(shù)用錯(cuò)了:因?yàn)閜ython求解時(shí),有偏估計(jì)和無偏估計(jì)是用 ddof參數(shù)來選擇的,求標(biāo)準(zhǔn)差時(shí)除以的值是:n-ddof。
如果使用numpy計(jì)算的話,numpy.std() 求標(biāo)準(zhǔn)差的時(shí)候默認(rèn)是除以 n,即有偏估計(jì);如果要無偏估計(jì),需要在np.std()參數(shù)中加入?yún)?shù) ddof = 1,也就是除以的是n-1;
然而,pandas卻是相反的,它默認(rèn)是無偏估計(jì),也就是除以 n-1;如果想有偏估計(jì),需要設(shè)置參數(shù) ddof=0,即 df.std(ddof=0)。
所以:
如果你的數(shù)值序列其他的都是nan,只有一個(gè)值不是nan,那么無偏估計(jì)時(shí),std求解的標(biāo)準(zhǔn)差就是nan了。
3. 列表、字符串等在直接索引時(shí),不能超出長度范圍;但是切片索引時(shí),卻可以超出范圍,超出范圍時(shí)取值一直到末尾。
例如:
a = 'abcdefg'
#print(a[10]) # 報(bào)錯(cuò):IndexError: string index out of range
print(a[3:10]) #不報(bào)錯(cuò):返回 defg
b= [2,3,4,5]#print(b[10]) # 報(bào)錯(cuò):IndexError: string index out of range
print(b[2:10]) #不報(bào)錯(cuò):返回 [4, 5]
4. range函數(shù),有步長參數(shù)可用
range(start,stop[,step])
有時(shí)候,步長參數(shù)可以讓你減少一層for循環(huán)的使用。
for ii in range(1,8,2):print(ii)
5. pandas求取眾數(shù) mode() 方法,多個(gè)眾數(shù)時(shí),求所有眾數(shù)的均值
importpandas as pdimportnumpy as np
df= pd.DataFrame({'name':['Jack','Alex','Bob','Nancy','Mary','Alice','Jerry','Wolf'],'course':['Chinese','Math','Math','Chinese','Math','English','Chinese','English'],'grade':[1,1,2,2,2,2,3,3],'score':[85,85,91,78,89,89,78,79]})print(df.score)
aa= df.score.mode() #眾數(shù)
print(type(aa)) #
print('aa:',aa) #如果有多個(gè)眾數(shù),會(huì)形成一個(gè)序列返回
print(np.mean(aa)) #多個(gè)眾數(shù)時(shí),求均值
注:scipy.stats.mode() 和df.value_counts() 均可用于求眾數(shù)。
參考:
總結(jié)
以上是生活随笔為你收集整理的python not in range1002无标题_Python中偶尔遇到的细节疑问(一):去除列名特殊字符、标准差出现nan、切片索引可超出范围、range步长、众数...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu系统rm命令删除文件没有提示
- 下一篇: 产品经理如何做好信息架构