首页 > 编程知识 正文

python数据分析,python数据整理实例

时间:2023-05-06 09:54:28 阅读:135329 作者:4573

总结了获得原始数据后,用Python进行数据预处理的一般操作。 之后根据总结不断更新。

目录一、数据波动二、数据转换三、数据清洗一、异常值二、重复值三、缺失值四、数据获取五、数据耦合一、1.join、索引连接基于数据帧的列二、2.merge、column连接

查看行列:data.shape

查看数据详细信息:data.info () ),可以检查是否有缺失值

http://www.Sina.com/data.describe (),可以查看异常数据

3358www.Sina.com/data.head(10 )、data.tail (10 ) )。

33558 www.Sina.com/data.columns.to list (

查看数值型数据详细信息:data.index

获取前/后10行数据:data.dtypes

查看列标签:data.ndim

查看行索引:data.values以二维ndarray形式返回数据帧中的数据

33558 www.Sina.com/seaborn.box plot (data [列名] ) ) ) )。

33558 www.Sina.com/seaborn.dist plot (data [列名].dropna ) )

二.数据转换器http://www.Sina.com/data.set _ index (日期,inplaec=True ),并将“日期”列设置为新索引

3358 www.Sina.com/data.reindex (columns=new _ columns _ list ) ) ) ) ) ) ) ) ) ) )。

3358 www.Sina.com/PD.to _ datetime (data )“日期”)、pd.read_csv(‘)“通过”、parse_date=[‘日期’] )

查看数据类型:

data[‘月’]=data [‘日期’].dt.month,

data[‘日’]=data [‘日期’].dt.day,

data[‘年’]=data [‘日期’].dt.year,

data[‘季度’]=data [‘日期’].dt.to _ period [‘q’],

data[‘星期几’]=data [‘日期’].dt.weekday _ name,

data[‘星期几-数字’]=data [‘日期’].dt.weekday

查看数据维度:data[‘温差类型’]=[‘大温差’if value=10 else‘‘正常’for value in data [‘‘温差’] ]

三.数据清洗1 .异常值查看除index外的值:

1、查看数据分布,其中线路图异常值为上下限为Q3 1.5IQR和Q1-1.5IQR,其中Q1、Q 2、Q3为数据的1、2、3分位数,IQR=Q3-Q1

2、3原理检查异常值: mean,std=data[列名].mean (,data[列名].std )、lower、upper=mean - 3 * std、mean 3 * std。 大于上限和小于下限的都被视为异常值

查看数据分布(箱线图):

1 .删除

2 .视为缺失值

3 .对数转换:右倾数据不适用于左倾数据

如果数据有正负,可以转换为:

NP.sign(x ) NP.log (NP.ABS ) x )1) )。

4 .使用阈值:使用3的值作为阈值时

5 .采用分箱法离散化处理,应用于楼梯影响,如年龄段影响y,连续年龄无影响

2 .重复值http://www.Sina.com/data.duplicated.su (

33558 www.Sina.com/data [ data.duplicated (keep=false ) ]

3358 www.Sina.com/data.drop _ duplicates (in place=true ) )。

3 .缺失值查看数据分布(直方图):data.isnull )判断缺失值; data.isnull.sum ()计算缺失值的个数

3358 www.Sina.com/data.drop na (axis=0,h

ow=) #必须指定删除方向;how:’any’只要有空值就删掉,’all’全为空值时删掉;
  fillna填充缺失值
  字典填充:data.fillna({‘分数’:0,’姓名’:洁净的书包’’},inplace=True)
  method填充:data[‘姓名’].fillna(method=’ffill’,axis=),ffill使用前一个填充,bfill使用后一个填充,axis默认为0
  replace填充: data[‘列名’].replace(0,df[‘列名’].mean(),inplace=True)用均值填充

四、数据获取

  获取一列: data[‘列名’],data.loc[:,’列名’]返回Series
  获取多列: data[含列名的列表],返回DataFrame
  获取一行: 必须使用切片,data[[0:1],],用df[0]会报错
  获取多行: data[1:5],data.loc[[行],[列]]
  获取多行中的某几列: data[1:5][[‘name’,‘age’]]
  通过标签索引: data.loc[行,列]
  通过位置获取: data.iloc
  条件选取数据:
  data.loc[data[‘温度’]>30]
  data.loc[(data[‘最高温度’]>30) & (data[‘最低温度’]<20)]
  获取索引为‘2019/9’的记录:
  result = [i.startswith(‘2019/9’) for i in index_list]
  data.loc[result,:]

五、数据合并 1.join,基于index连接DataFrame的列

  df1.join(df2,how=)  #how=‘left’(默认),‘right’,‘inner’,‘inner’
  列里面一旦重名,会报错,需要这样操作
   df1.join(df2,how=’’,lsuffix=’_1’,rsuffix’_r’)

2.merge,基于column连接,类似SQL的join

  pd.merge(df1,df2,how=’’)  #how=‘left’,‘right’,‘inner’,‘inner’
  pd.merge(df1,df2,how=’’,on=‘列名’)  #on指定列连接,(如果是多列,用列表[])默认方式是inner

3.concat,合并相同的Excel或给DataFrame添加行或列时使用

  pd.concat([df1,df2],asix=) #axis=0(默认),按列拼接;axis=1,按行拼接,ignore_index=False,沿用原来的索引

六、其他操作 1.数据分组聚合

  data.groupby(by=‘列名’).mean()
  聚合函数:将一组数据进行计算返回一个值agg()是进行聚合操作
  data.groupby(by=‘月份’)[‘最高温度’].max()

  agg_dict={‘最高温度’:[‘max’,‘mean’],‘最低温度’:‘min’}
  data.groupby(by=‘月份’).agg(agg_dict)

def top(month):
  return month.sort_values(by=‘最高温度’)[-2:]
df.groupby(by=‘月份’,sort = False).apply(top)

2.列表生成式中的if…else

  [i**2 for i in index_list if I >2]   #for后面只能写if判断,不能写else
  [True表达式 if i.startswith(‘2019’) else False表达式 for i in index_list]   # for前面可以写if…else

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。