python padas 学习,pythonpadas,import mat


import matplotlibfrom pandas import DataFrameimport numpy as npimport pandas as pdimport MySQLdbimport matplotlib.pyplot as plt#df =Padaas dataframe 对象(二维标记数组)#s =Pandas series对象(一维标记数组)db = MySQLdb.connect(host="localhost", port=3306, user="root", passwd="1234", db=‘spj‘,charset="utf8")#连接数据库filename = ‘count_day.csv‘#文件路径名query = ‘select * from j‘#sql查询语句‘‘‘#导入数据pd.read_excel(filename)#从excel文件导入数据pd.read_table(filename)#和csv一样,必须界定分隔符pd.read_json(json-string)#从json格式的字符串导入数据pd.read_html(url)#解析url,html文件,导入其中的tables表格pd.read_clipboard()#从粘贴板获取内容,传给read_tables()#从sql数据库导入数据df=pd.read_sql(query,db)#从csv导入数据#index_col为指定数据中哪一列作为Dataframe的行索引#分隔符默认为,分隔df = pd.read_csv(filename,sep=‘,‘,header=None,index_col=0)#导出数据df.to_csv(‘ans.csv‘,index=False,sep=‘,‘)#导出数据到csvdf.to_excel(filename)#导出数据到exceldf.to_sql(table_name,db)#导出数据到sqldf.to_json(filename)#以json格式导出数据到文本文件#自己构造dataframe数据df = pd.DataFrame([[1,2,3],[4,5,6]],columns=[‘f1‘,‘f2‘,‘f3‘])#columns是列索引df = pd.DataFrame({‘user-id‘:[‘行1‘,‘行2‘,‘行3‘],‘item_id‘:[‘商品1‘,‘商品2‘,‘商品3‘]})#按列构造df = pd.DataFrame([{‘user-id‘:‘用户1‘,‘item-id‘:‘商品1‘},{‘user-id‘:‘用户2‘}])#按行构造#查看数据show = df.head(1)#head(n),查看前n行show = df.tail(1)#查看最后n列show = df.shape#查看行数和列数show = df.info()#查看索引,数据类型和内存信息show = df.describe()#查看数值型列的汇总信息show = df[‘item-id‘].value_counts(dropna=False)#查看Series对象的唯一值和计数show = df[‘item-id‘].unique()#查看Series不重复的值#数据选取s = df[‘user-id‘]#(name)获取一列的数据,返回值为Seriesdf = df[[‘user-id‘,‘item-id‘]]#(list)选取某几列,返回为Dataframeshow = s.iloc[0]#按位置选取数据(Serieas可以省略df[‘user_id‘][0])show = df.iloc[0,0:2]#(row,col)返回第一行,从0到2列show = s.loc[‘item-id‘]#按索引选取数据show = df.sample(frac=0.5)#按比例随机采样show = df.sample(n=len(df))#指定采样个数‘‘‘#自己构造dataframe数据df = pd.DataFrame([[1,2,3],[4,5,6]],columns=[‘f1‘,‘f2‘,‘f3‘])#columns是列索引df = pd.DataFrame([{‘user-id‘:‘用户1‘,‘item-id‘:1},{‘user-id‘:‘用户2‘}])#按行构造df = pd.DataFrame({‘user_id‘:[‘行1‘,‘行1‘,‘行3‘],‘item_id‘:[‘商品1‘,‘商品2‘,‘商品3‘],‘test_id‘:[12,11,4]})#按列构造‘‘‘#数据整理show = df.isnull()#查看对象中的空值,返回一个bool类型show = df.notnull()#查看对象中的非空值,返回一个bool类型show = df.dropna(axis=0)#删除所有包含空格的行show = df.dropna(axis=1)#删除所有包含空格的列show = df.dropna(axis=0,thresh=2)#删除所有小于(thresh)个非空值的行show = df.fillna(‘商品id‘)#对所有空值填充,可指定哪几列(df[].fillna())show = df.fillna(df.mode().iloc[0])#众值填充show = df.fillna(df.median())#中位数填充show = df["item-id"].fillna(‘填充‘)#对某一列填充show = df["item-id"].astype(float)#更改某一列的数据类型show = df["item-id"].replace(1,‘one‘)#用‘one‘代替所有等于1的值show = df.rename(columns=lambda x:x+"1")#批量更改列名show = df.rename(index=lambda x:x+"1")#批量更改索引show = df.rename(columns={‘item-id‘:‘商品id‘})#选择性更改列名show = df.set_index(‘item-id‘,append=False) #将某一列变成索引,append=true添加新索引df1 = df.sample(n=1)df2 = df.sample(frac=0.5)商品种类df3 = pd.concat([df1,df2])#合并两个数据集show = df3.reset_index(drop=False)#重置索引,drop=true舍弃以前的索引#数据处理show = df[df[‘test_id‘]>4]#选择‘test_id‘列>4的行show = df.sort_values(by=‘test_id‘,ascending=True)#按照列‘test_id’排序,默认升序show = df.sort_values(by=[‘test_id‘,‘item_id‘],ascending=[True,False])#先按列‘test_id’排升序,后按‘item_id‘排降序show = df.groupby(‘user_id‘)[‘test_id‘].apply(np.mean)#按‘user_id’分组后,对其‘test_id‘求均值show = df.pivot_table(index=‘user_id‘,values=[‘item_id‘,‘test_id‘],aggfunc=min)#按索引分组,值,每组里面的最小值show = df.groupby(‘user_id‘,as_index=False)[‘test_id‘].agg({‘商品种类‘:‘count‘,‘商品总数‘:‘sum‘})#先分组,根据‘test_id‘字段做统计,as_index默认将依据分组字段作为索引show = df[‘test_id‘].apply(np.mean)#对df中的每一列应用函数np.meanshow = df.apply(np.max,axis=1)#对df中的每一列应用函数np.mean(必类型统一)for index,row in df.iterrows():    #index索引,row每一行,输出时,选取其中的一个或几个字段输出    print(index,row[‘user_id‘],row[‘test_id‘])for key,df in df.groupby(‘user_id‘):    #key=‘user_id‘,df是分组后的数据    print(key,len(df),df)#构造分组特征,对‘user_id‘分组,对一个S对象,计算等级(rank)#rank:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.rank.htmlshow = df.groupby(‘user_id‘,as_index=False)[‘test_id‘].rank(ascending=False,method=‘average‘)#数据合并df = df1.append(df2)#将df2中的行添加到df1的尾部df = pd.concat([df1,df2],axis=1)#按列合并(axis=1),按行合并(axis=0)(都要保证对应的行和列是一样的)df = pd.merge(df1,df2,on=‘user_id‘,how=‘inner‘)#对df1,df2的列进行类似SQL的join操作#集合差集计算df1 = pd.DataFrame({‘user‘:[1,2,3,4],‘id‘:[101,102,103,104]})df2 = pd.DataFrame({‘user‘:[1,2]})df2[‘flag‘]=1#设置一个标志列df = pd.merge(df1,df2,on=‘user‘,how=‘left‘)#左连接df = df[df.flag.isnull()].drop(‘flag‘,axis=1)#对df1中出现的df2删除行,并且删除‘flag‘列#统计函数show = df.mean()#返回所有列的均值show = df.corr()#返回列于列的关系函数show = df.user_id.corr(df.test_id)#show = df.count()#返回每一列非空值的个数show = df.max()#每一列最大值show = df.min()#每一列最小值show = df.median()#返回每一列的中位数show = df.std()#返回每一列的标准差show = df.dtypes()#查看数据类型show = df.isnull.sum()#查看每一列的空值个数‘‘‘#画图函数zhfont = matplotlib.font_manager.FontProperties(fname=r‘C:/Windows/Fonts/FZYTK.TTF‘) # chinese#直方图hist = df[‘user_id‘].hist()#查看变量分布hist.plot()#折线图s = df[‘test_id‘]s.plot()df.plot()#柱图fig, axes = plt.subplots(2, 1)s = df[‘test_id‘]s.plot(kind=‘bar‘, ax=axes[0], color=‘k‘, alpha=0.7)s.plot(kind=‘barh‘, ax=axes[1], color=‘k‘, alpha=0.7)plt.legend(prop=zhfont)plt.show()

参考资料:

http://pandas.pydata.org/pandas-docs/stable/api.html#binary-operator-functions
https://blog.csdn.net/hustqb/article/details/54410670

python padas 学习

评论关闭