python3

人生苦短

学习网站

1.python基础:廖雪峰

2.python数据分析基础:每天进步一点点

学习笔记

序号 包名 序号 功能 函数 测试语句 详细用法 参数详解 扩展用法 学习时间 截图
1 pandas 1 数据去重 "duplicated()
drop_duplicates()" "import pandas as pd
data =pd.DataFrame({'name':['LIU','LI','WANG','LIU'],
'age':[28,31,45,28],
'gender':['M','M','M','M']})
data2=data.drop_duplicates()
print(data2)
data3 =pd.DataFrame({'age':[14,16,25,56,25],'name':['wang','li','zhao','hui','zhao'],'adress':['M','M','M','M','M'],'six':
['nan','nan','nan','nan','nan']
})
data4=data3.drop_duplicates()
print(data3.duplicated())
print(data3)" data.duplicates(subset='gender') 指定某些变量的重复性校验和删除就往subset中传递变量 2017/12/11
2 抽样 "sample()
shape
loc()
index
head()" "iris = pd.read_excel('iris.xlsx')
print(iris.head())
#训练集
train = iris.sample(frac = 0.6, random_state=1)
#测试机
test = iris.loc[~iris.index.isin(train.index),:]

print('训练集的行、列数:',train.shape)
# print('\n')
print('测试集的行、列数:',test.shape)" "sample(n=none,frac=none,
replace=none,weights=none,
random_state=none)" "n:指定抽样的个数
frac:制定抽样的比例
replace:是否有放回抽,默认无放回
weights:指定每个样本抽中的概率,默认都相同
random_state:指定抽样的随机种子,默认无固定的随机种子,即每次抽样的结果都不一样" "训练集用来模型的生成
测试集用来模型的检验" 2017/12/11
3 频数统计 "value_counts()
sum()" "income = pd.read_excel('income.xlsx')
data1 = income.head()
print(data1)
data2 = income.gender.value_counts()
print(data2)
data3 = income.gender.value_counts()/sum(income.gender.value_counts())
print(data3)" 2017/12/11
4 缺失值处理 "isnull()
index()
append()
any()
all()" "import pandas as pd
import numpy as np
df = pd.DataFrame([
[1,2,3,4],
[np.NaN,6,7,np.NaN],
[11,np.NaN,12,13],
[100,200,300,400],
[20,40,60,np.NaN]
],columns=['x1','x2','x3','x4',])
print(df)
#总览数据集是否存在缺失
print(any(df.isnull()),'\n')
#每一列是否存在缺失,及缺失比例
is_null = []
null_ratio = []
for col in df.columns:
is_null.append(any(pd.isnull(df[col])))
null_ratio.append(float(round(sum(pd.isnull(df[col]))/df.shape[0],2)))
print(is_null,'\n',null_ratio,'\n')
#每一行是否有缺失
is_null = []
for index in list(df.index):
is_null.append(any(pd.isnull(df.iloc[index,:])))
print(is_null,'\n')" "要监控每个变量是否存在缺失,缺失的比例如何?
使用isnull函数检查数据集的缺失情况" 2017/12/12
5 "fillna()
numpy.mean()
numpy.median()
numpy.max()" "data5 = df.fillna(value = {'x1':df.x1.mean(),'x2':df.x2.median(),'x4':df.x4.max()})
" median(a,axis=None,out=None,overwrite_input=False,keepdims=False) "mean():取均值
经常操作的参数为axis,以m * n矩阵举例:
axis 不设置值,对 m*n 个数求均值,返回一个实数
axis = 0:压缩行,对各列求均值,返回 1* n 矩阵
axis =1 :压缩列,对各行求均值,返回 m *1 矩阵
median():计算沿指定轴的中位数
a:输入的数组;
axis:计算哪个轴上的中位数,比如输入是二维数组,那么axis=0对应行,axis=1对应列;
out:用于放置求取中位数后的数组。 它必须具有与预期输出相同的形状和缓冲区长度;
overwrite_input :一个bool型的参数,默认为Flase。如果为True那么将直接在数组内存中计算,这意味着计算之后原数组没办法保存,但是好处在于节省内存资源,Flase则相反;
keepdims:一个bool型的参数,默认为Flase。如果为True那么求取中位数的那个轴将保留在结果中;" 前向替补、后向替补、函数替补 2017/12/12
6 dropna() "data1 = df.dropna()
print(data1)
data2 = df.dropna(how='all')
print(data2)
data3 = df.fillna(method='ffill')
data4 = df.fillna(method='bfill')" dropna(self,axis,how,thresh,subset,inplace) "dropna函数,有两种删除模式:
一种是对含有缺失的行(任意一列)进行删除;另一种是删除那些全是缺失(所有列)的行" 2017/12/13
7 数据映射 "apply()
iloc()
head()" "#查看各列各行是否有缺失
#创建一个判断对象是否含有缺失的匿名函数
isnull = lambda x : any(pd.isnull(x))
#axis = 0表示将isnull函数映射到各列
data6 = df.apply(func = isnull,axis=0)
print(data6)
data7 = df.apply(func = isnull,axis = 1)
print(data7)
#增加一列tot求和
df['tot'] = df.iloc[:,0:5].apply(func = np.sum, axis = 1)
print(df.head(5))
data8 = df.iloc[:,0:5].apply(func=np.mean,axis = 0)
print(data8)" "apply(self,func,axis,broadcast,raw,reduce,args,kwds)
head(self,n)
iloc[]" 例如:iloc[:,:]取出所有行和列 python在循环时的效率很低,数据映射可以避开循环达到同样的效果 2017/12/13
8 数据汇总 "groupby()
aggregate()" "group_gender1 = income.groupby(['gender'])
data1 = group_gender1.aggregate(np.mean)
group_gender2 = income.groupby(['gender','income_level'])
data2 = group_gender2.aggregate({'age':np.mean,'edu_time':np.median})" groupby函数与aggregate函数的搭配使用 2017/12/13
9 数据集的纵向合并 "concat()
os.listdir()" "import os
#指定数据文件所在的路径
path = 'C:\\Users\\Administrator\\PycharmProjects\\untitled\\data1\\'
#罗列路径下的文件名称(os.listdir()可以返回路径下的文件和文件夹列表)
filenames = os.listdir(path)
dataframes = []
#append()用于在列表的末尾添加对象
for file in filenames:
dataframes.append(pd.read_excel(path + file))
alldata = pd.concat(dataframes,ignore_index = True)" concat(objx,axis,join,join_axes,ignore_index,keys,leves,names,verify_integrity,copy) 待补充 concat第一个参数必须是一个可迭代的对象,一般将其定义为列表 2017/12/14
10 数据集的横向扩展 merge() "user_info = pd.read_excel('user_info.xlsx')
economy_info = pd.read_excel('economy_info.xlsx')
merge_data = pd.merge(user_info,economy_info,how = 'left')
print(merge_data)

user_info = pd.read_excel('user_info.xlsx')
economy_info = pd.read_excel('economy_info.xlsx')
# merge_data = pd.merge(user_info,economy_info,how = 'left')
merge_data2 = pd.merge(user_info,economy_info,how = 'left',left_on='id',right_on='ID')
merge_data3 = merge_data2.drop(['ID'],axis = 1)
print(merge_data3)
" "pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
left_index=False, right_index=False, sort=False,
suffixes=('_x', '_y'), copy=True, indicator=False)" "left,right:为需要连接的两张表;
how:默认对两张表进行内连,'right','left'为右连和左连,一般inner和left使用最多;
on:指定关连两张表的公共字段;
left_on,right_on:指定left表和right表中需要关连的字段;
left_index,right_index:指定left表和right表中需要关连的行索引" "你需要在excel使用vlookup这样的函数完成数据的连接。
如果你的两张表有公共字段,而且字段名称完全一致,merge函数会自动查询这些字段,并以这些字段作为连接的依据。" 2017/12/19
11 离散变量的哑变量处理 "get_dummies()
离散变量
连续变量" 2017/12/19
12 连续变量的分段


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值