python常用代码

pandas排序:

函数要义:参数,功能,返回值
# series的排序:
#          Series.sort_values(ascending = True,inplace = False)
#    参数说明:
#          ascending:默认为True升序排序,为False降序排序
#          inplace : 是否修改原始的Series


# dataFrame排序:
#  DataFrame.sort_values(by,ascending = True,inplace = False)
#     参数说明:
#            by : 字符串或者list<字符串>,单列排序或者多列排序
#            ascending: bool或者list,升序还是降序,如果是list对应by的多列
#            inplace : 是否修改原始DataFrame
#  0 读取数据
import pandas as pd 
df = pd.read_csv("beijing_tianqi_2018.csv")

# 换掉温度后面的后缀
df.loc[:,"bWendu"] = df["bWendu"].str.replace("℃","").astype("int32")
df.loc[:,"yWendu"] = df["yWendu"].str.replace("℃","").astype("int32")

# 1  series的排序
df["aqi"].sort_values()

df["aqi"].sort_values(ascending = False)
df["tianqi"].sort_values()


# 2   DataFrame的排序
# 2.1 单列排序
df.sort_values(by = "aqi")
df.sort_values(by= "aqi",ascending = False)

# 2.2 多列排序
# 按空气质量等级、最高温度排序,默认升序
df.sort_values(by=["aqiLevel","bWendu"])
# 两个字段都降序
df.sort_values(by=["aqiLevel","bWendu"],ascending = False)
# 分别指定升序和降序
df.sort_values(by =["aqiLevel","bWendu"],ascending= [False,True])

pandas查看数据分布

  
df.describe()
     
外访反馈月份    当日合同回款_sum        月初余额_max    月初余额_count
count  45439.00000  4.543900e+04    45439.000000  45439.000000
mean       8.67869  1.072089e+04    51707.858952      1.380378
std        2.09351  2.658717e+04    36289.394148      0.830070
min        6.00000  1.000000e-01      478.150000      1.000000
25%        7.00000  2.000000e+03    26849.020000      1.000000
50%        8.00000  4.471000e+03    45498.300000      1.000000
75%       11.00000  1.000000e+04    69995.690000      2.000000
max       12.00000  2.520000e+06  1000000.000000     18.000000

pandas变量改名

官方文档
DataFrame.rename(self, mapper=None, index=None, columns=None, axis=None, copy=True, inplace=False, level=None, errors=‘ignore’)

#mapper:dict or function
映射关系,可以是字典,也可以是一个函数。
df.rename({0:111})
	name	mark	gender
111	zhao	150		female #行索引从0变为111
1	qian	122		female
2	zhou	155		male
3	wang	132		male

df.rename(lambda x: x+11) #参数也可以是函数,索引都加了11
	name	mark	gender
11	zhao	150		female
12	qian	122		female
13	zhou	155		male
14	wang	132		male

#index、columns、axis:
这3个参数作用类似,dataframe中有行和列两个方向,在改名时,需要指明改名的是行还是列(默认是行),使用df.rename(index = mapper)或者df.rename(columns=mapper)的形式,和df.rename(mapper,axis=0 or 1)的效果是一样的

df.rename(lambda x: x+'11',axis=1)
	name11	mark11	gender11  #列索引都加了11,name变为name11
0	zhao	150		female
1	qian	122		female
2	zhou	155		male
3	wang	132		male

df.rename(columns=lambda x: x+'11')#等价于上面,写法更简洁直观
	name11	mark11	gender11
0	zhao	150		female
1	qian	122		female
2	zhou	155		male
3	wang	132		male

#copy:bool,default = True
默认为True,效果不清楚。。。文档就一句话,与会复制底层数据(also copy underlying data), 等一个课代表解答一下。

#inplace:bool,default False
将结果返回赋值给原变量,无需再次将结果赋值给新变量。即df.rename(inplace=True)之后,df的值发生改变(pandas中好多方法都有这个参数,此处就演示了)

#level int,level name,default none
针对多层索引,指定需要改名字的索引具体是哪一个。
df1 = pd.DataFrame([10,11,12,13],index=[['a','a','b','b'],[1,2,3,4],[4,3,2,1]],columns=['tt'])
df1
			tt #前三列都为索引
a	1	4	10
	2	3	11
b	3	2	12
	4	1	13
	
df1.rename(index={1:'dd'})
			tt#索引中所有的1都变成了dd
a	dd	4	10
	2	3	11
b	3	2	12
	4	dd	13
	
df1.rename(index={1:'dd'},level=1)
			tt#只有第2列索引改为dd(从0开始计数)
a	dd	4	10
	2	3	11
b	3	2	12
	4	1	13

#errors:{‘ignore’, ‘raise’}, default ‘ignore’
发生错误的处理方式,ignore为忽略,raise为报错。比如改名字是,如果传入的参数中包含索引列没有的值,就会报错,ignore或者raise来决定错误的处理方式

pandas中pivot后变量改名

#修改列名字
ret1.columns = ['_'.join(col).strip() for col in ret1.columns.values]
ret1.columns
#直接修改列名
ret1.columns = ['外访反馈月份', '产品', '合同号', '新客户号', '发出时账期']

 

 

你可能感兴趣的:(数据分析,概率论)