前言:python数据分析的基础知识,简单总结,主要是为了方便本身写的时候查看(大家可能看不太清楚T^T),发现有用的方法,随时补充,欢迎指正
数据分析专栏:python
series1=pd.Series([1,2,3]) out: 0 1 1 2 2 3----->这就是序列 series2=pd.Series({'a':1,'b':2}) 序列的索引相似于一维数组 seres1.set_index('Day', inplace=True)//设置新的索引 series1[[0,1]] out: 0 1 1 2
三种方式: 一、嵌套列表 pd.DataFrame([['张三','23'],['李四','25']]) out: 0 1 0 张三 23 1 李四 25 二、字典 pd.DataFrame({'姓名':['张三','李四'],'年龄':[23,25]}) 三、二维数组 pd.DataFrame(np.array([['张三','23'],['李四','25']]))
pd.read_tabel(filepath,sep=',',parse,skiprows,nrows) //参数不少这里不一一列举,用的时候能够查询资料 pd.read_csv(……)
pd.read_excel(io=filepath,sheetname,header,parse,skiprows) //参数不少这里不一一列举,用的时候能够查询资料
df.shape//输出数据的行列数 df.dtypes//输出每一个数据变量的类型 data['name']=data['name'].astype('str')#数据类型的转换 pd.to_datatime(2017年10月,format='%Y年%m月')//时间形式的更改 array=df.values #dataframe转化成array df = pd.DataFrame(array) #array转df 【注】还有不少,之后我用到会补充!
df.describe()//输出数值型数据的统计描述 df.describe(include=['object'])//输出离散型(字符型)数据的统计描述 df['price'].std()//计算列的标准差 df['price'].cov(df['point'])// 计算两个字段间的协方差 df['price'].corr(df['point']) #相关系数在-1到1之间,接近1为正相关,接近-1为负相关,0为不相关 df['name'].value_counts()#词频统计 df.loc[df['number']>10]#筛选指定条件的行 df.iloc[:3,:2] #冒号先后的数字再也不是索引的标签名称,而是数据所在的位置,从0开始,前三行,前两列。只能用于整数索引 df_inner.iloc[[0,2,5],[4,5]] #提取第0、二、5行,四、5列 df.set_index('列名')#将列转换成行索引 df.columns=['公司','时间','地点','学校','地点','点击量']#设置列名 append方法: a = {"x":1,"y":2} data = data.append(a,ignore_index=True) 按指定列排序 DataFrame.sort_values(by=‘##’,axis=0,ascending=True, inplace=False, na_position=‘last’) axis=0表示列 axis=1表示行
>>重复值处理 any(df.duplicated())//检测是否有重复值 df.drop_duplicates(inplace=Ture)//删除重复项 >>缺失值处理 any(df.isnull()//检测是否有缺失值 一、删除有缺失值的行 df.dropna() 二、删除变量(列) df.drop('age',axis=1) 三、替换 df.fillna(method='ffill')//前向替换 df.fillna(method='bfill')//后向替换 df.fillna(value=0)//常数替换 df.fillna(value={'a':df.a.mode()[0]})//统计值替换 >>异常值处理 一、标准差法 xbar=df.num.mean()//获取平均值 xstd=df.num.std()//获取标准差 any(df.num>xbar+2*xstd)//上限检测 any(df.num<xbar-2*xstd)//下限检测 二、箱线图法 Q1=df.num.quantile(q=0.25)//第一分位数 Q3=df.num.quantile(q=0.75)//第三分位数 IQR=Q3-Q1 any(df.num>Q3+1.5*IQR)//上限检测 any(df.num>Q1+1.5*IQR)//下限检测 三、替换法处理异常值 UL=Q3+1.5*IQR//异常值判别上限 replace_value=df.num[df.num<UL].max()//找出低于判别上限的最大值 df.num[df.num>UL]=replace_value//替换
//取中间三行,返回姓名和年龄两列 df.iloc[1:4,[0,2]] df.loc[1:3,['name','age']] df.ix[1:3,[0,2]]
*写入excel df.to_excel('name1.xlsx', sheet_name='name2') *写入csv df.to_csv('name.csv')
一、合并函数concat pd.concat([df1,df2],axis=0,join='outer',join_axes=None,ingnore_index=False,keys=None]) axis=0/1表示按照行/列合并 join=‘outer/inner’表示合并全部数据或者公共部分数据 ingnore_index是否生成新索引 keys为合并后的数据添加新索引 二、链接函数merge pd.merge(left,right,how='inner',on=None,left_on=None,right_on=None) left表示主表 right表示副表 how表示链接方式inner、left、right、outer left_on表示主表的共同字段 right_on表示副表的共同字段