主要是参考博客园 Little_Rookie 像Excel一样使用python进行数据分析
https://www.cnblogs.com/nxld/p/6756492.html
在这个基础上筛选补充了常用的一些函数,并增加说明。
1.导入相关的库
import numpy as np
import pandas as pd
2.读取数据文件
df=pd.DataFrame(pd.read_csv('name.csv',header=1)) #读取csv
df=pd.DataFrame(pd.read_excel('name.xlsx')) #读取excel
3.列命名
df.columns = ["a","b"]
df.rename(columns=('$a': 'a', '$b': 'b', '$c': 'c', '$d': 'd', '$e': 'e'}, inplace=True)
#就是把$a列改为b列
4.数据描述
df.shape()了解数据有几行几列
df.info() #帮助了解数据文件本身
df.head(3) #前10列
df.tail(3) #后10列
df.dtypes #帮助你了解dataframe里面有的数据类型
df.isnull() #帮助你了解数据空值
df['price'].isnull() #了解某一列空值
df.set_index('id') #设置索引列
5.数据类型转换
df['price'].astype('int')
df['col'].astype('str')
6.增删改列
删除某列
del df['B']
插入/增加列
col_name = list(data.columns) # 列出data所有列
col_name.insert(5,'seconds')# 在5这个位置插入seconds列
cy2=cy2.reindex(columns = col_name,fill_value = 0)
调整列次序
order1 = [ 'b', 'etime', 'ltime', 'seconds', 'today', 'ehour'] #list列出你想要的顺序
df = df[order]
7.空值填充
df.dropna(how='any') #删除数据表中含有空值的行
df.fillna(value=0) #空值填充为0
df['price'].fillna(df['price'].mean() #price这一列的空值填充为这一列的均值
8.排序
df.sort_values(by=['age'],ascending=False) #按照age列降序排序
df.sort_index(axis=1,ascending=False) #按照列索引降序排序
9.取某些列或者行
df.ix[1] #取第2行数据
df.iloc[1] #取第2行数据
df['brand'] #取列索引为brnd的一列数据
df.loc['A'] #取行索引为”A“的一行数据
df.loc[['A','B'],['x','z']] #表示选取'A'和'B'这两行以及columns为x,z的列
df.iloc[1:3,1:3] #数据切片操作,切连续的数据块
df.iloc[[0,2],[1,2]] #取出需要的某几行X某及列
df[df>0] #表示选取数据集中大于0的数据
df[df.x>5] #表示选取x这一列大于5的所有的行
10.横向合并行或者纵向合并两个dataframe
pd.concat([df1,df2],axis=0)
#合并axis=0纵向按照同索引合并,axis=1纵向合并
11.列运算
df['city'].unique() #取某列的唯一值
df['city'].replace('sh', 'shanghai') #把city这一列的sh替换为shanghai
df['col']=df['col1']+df['col2'] #某列等于某两列之和
12.筛选数据
df.loc[(df_inner['age'] > 25) | (df['city'] == 'beijing'), ['id','city','age','category','gender']].sort(['age'])
13.两组数据求交集
df_inner=pd.merge(df,df1,how='inner',on='key')
df_left=pd.merge(df,df1,how='left',on='key')
df_right=pd.merge(df,df1,how='right',on='key')
df_outer=pd.merge(df,df1,how='outer')
14.数据分组并标记
这个经常是数据分析建模之前的预处理
df['group'] = np.where(df['price'] > 3000,'high','low')
#如果price列的值>3000,group列显示high,否则显示low
df.loc[(df_inner['city'] == 'beijing') & (df_inner['price'] >= 4000), 'sign']=1
#对符合多个条件的数据进行分组标记
15.文本拆分列
df['ed']=df['etime'].map(lambda x:x.split(" ")[0])
#etime按照空格拆分的第1列变成ed这一列
df['ehour']=df['etime'].map(lambda x:x.split(" ")[1])
#etime按照空格拆分的第2列变成ehour这一列
文本合并列直接把列相加即可
16.数据输出
df.to_csv('excel_to_python.csv')
网友评论