数据分析——pandas
前言:python数据分析的基础知识,简单总结,主要是为了方便自己写的时候查看(你们可能看不太清楚T^T),发现有用的方法,随时补充,欢迎指正
数据分析专栏:
文章目录
数据处理——pandas
1、序列与数据框
1.1序列
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
1.2数据框
三种方式:
1、嵌套列表
pd.DataFrame([['张三','23'],['李四','25']])
out: 0 1
0 张三 23
1 李四 25
2、字典
pd.DataFrame({'姓名':['张三','李四'],'年龄':[23,25]})
3、二维数组
pd.DataFrame(np.array([['张三','23'],['李四','25']]))
2、数据的读取
2.1读取txt和csv
pd.read_tabel(filepath,sep=',',parse,skiprows,nrows)
//参数很多这里不一一列举,用的时候可以查询资料
pd.read_csv(……)
2.2读取excel
pd.read_excel(io=filepath,sheetname,header,parse,skiprows)
//参数很多这里不一一列举,用的时候可以查询资料
3、数据类型的转换和统计
3.1数据类型的转换
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
【注】还有很多,以后我用到会补充!
3.2数据的统计
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、2、5行,4、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表示行
3.3数据处理
>>重复值处理
any(df.duplicated())//检测是否有重复值
df.drop_duplicates(inplace=Ture)//删除重复项
>>缺失值处理
any(df.isnull()//检测是否有缺失值
1、删除有缺失值的行
df.dropna()
2、删除变量(列)
df.drop('age',axis=1)
3、替换
df.fillna(method='ffill')//前向替换
df.fillna(method='bfill')//后向替换
df.fillna(value=0)//常数替换
df.fillna(value={'a':df.a.mode()[0]})//统计值替换
>>异常值处理
1、标准差法
xbar=df.num.mean()//获取平均值
xstd=df.num.std()//获取标准差
any(df.num>xbar+2*xstd)//上限检测
any(df.num<xbar-2*xstd)//下限检测
2、箱线图法
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)//下限检测
3、替换法处理异常值
UL=Q3+1.5*IQR//异常值判别上限
replace_value=df.num[df.num<UL].max()//找出低于判别上限的最大值
df.num[df.num>UL]=replace_value//替换
4、数据子集的获取与储存
4.1数据子集的获取
//取中间三行,返回姓名和年龄两列
df.iloc[1:4,[0,2]]
df.loc[1:3,['name','age']]
df.ix[1:3,[0,2]]
4.2数据的存储
*写入excel
df.to_excel('name1.xlsx', sheet_name='name2')
*写入csv
df.to_csv('name.csv')
5、表的合并与连接
1、合并函数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为合并后的数据添加新索引
2、连接函数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表示副表的共同字段

浙公网安备 33010602011771号