pandas常用指令的详细解释,附代码和数据集

pandas常用指令的详细解释,附代码和数据集

相关包的导入

使用的为pandas和numpy,两个包的关联系十分的大

import numpy as np
import pandas as pd
import warnings
warnings.filterwarnings('ignore')
'''Python的警告信息有时候很烦人,特别是因为软件版本引起的警告,因此可以去掉python输出的警告'''

数据集的显示:

数据集采用网上的一个,共3333个样本,20个特征

df = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/telecom_churn.csv') #有参数限定,sep(分隔符),header(有无列名)
df.head()  # 输出前五行的数据集
df.tail()  # 输出后五行的数据集

查看数据集信息的相关代码:

  1. df.shape # 查看数据集的维度,显示为(3333,20)
  2. df.columns # 查看数据集的各特证名(即:列名)
  3. df. info() # 查看数据集的一些总体信息,包括(维度,列名,各列的数据类型以及是否有缺失值等)(常用)
df.info()
'''信息显示如下
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3333 entries, 0 to 3332
Data columns (total 20 columns):
 #   Column                  Non-Null Count  Dtype  
---  ------                  --------------  -----  
 0   State                   3333 non-null   object 
 1   Account length          3333 non-null   int64  
 2   Area code               3333 non-null   int64  
 3   International plan      3333 non-null   object 
 4   Voice mail plan         3333 non-null   object 
 5   Number vmail messages   3333 non-null   int64  
 6   Total day minutes       3333 non-null   float64
 7   Total day calls         3333 non-null   int64  
 8   Total day charge        3333 non-null   float64
 9   Total eve minutes       3333 non-null   float64
 10  Total eve calls         3333 non-null   int64  
 11  Total eve charge        3333 non-null   float64
 12  Total night minutes     3333 non-null   float64
 13  Total night calls       3333 non-null   int64  
 14  Total night charge      3333 non-null   float64
 15  Total intl minutes      3333 non-null   float64
 16  Total intl calls        3333 non-null   int64  
 17  Total intl charge       3333 non-null   float64
 18  Customer service calls  3333 non-null   int64  
 19  Churn                   3333 non-null   bool   
dtypes: bool(1), float64(8), int64(8), object(3)
memory usage: 498.1+ KB'''
  1. df.describe() # 可以显示数值类型的特征值,以及对应特征的数值,均值,范围,标准差,四分位数(常用)
    df.describe(include = [‘object’, ‘bool’]) # 也可以用include参数,显示对象和布尔类型的相关信息
  2. df[‘Churn’].value_counts() # value_count统计出现次数,其值为次数,按照从大到小,其索引为列表原先值。即 value为2850,其index 为False.
    False 2850
    True 483
    Name: Churn, dtype: int64

数据集的排序

  1. 使用sort_value的方法,可以按照具体某一列,或者某几列进行排序
    具体用法如下:
df.sort_values(by='Total day charge', ascending=False).head()  # 按照某一列排序,采用降序,输出前五行

df.sort_values(by=['Churn', 'Total day charge'],  
               ascending=[True, False]).head()
    # 按照两列排序,首先按照 'Churn'升序,对排列后的结果按照 'Total day charge'降序排列,输出前五行
  1. 对某些数据进行判断。筛选出我们想要的数据,这个时候需要我们给定一些条件
df[df['Churn'] == 1]['Total day minutes'].mean()  
#先对churn == 1进行筛选,然后对 'Total day minutes'这一列求均值

df[(df['Churn'] == 0) & (df['International plan'] == 'No')
   ]['Total intl minutes'].max() 
   # 筛选条件有两个

数据集的获取

对数据集的获取,我们一般采用 loc和iloc用法,两个均是按照0开始。iloc是对行数或者列数进行索取,而loc是通过名称索引,也就是按照索引号获取

df.loc[0, :]
df.iloc[0, :] 
'''两者获取的内容是一致的,都是以0开始,即使行索引的名字是其他。两者一般都可以互用,
但是有以下几种情况不可以'''
  1. 索引的值是乱序的时候,使用 iloc可以获取数据集,使用 loc会出错,但执行df.loc[range(m), :]会将索引值重新赋值。
  2. 想要保留索引值的时候,当其索引为非数字时,尽量使用iloc

函数应用到具体单元格,行,列

使用三个函数,apply(),map(),replace()等

  1. 相对某列数值进行变化,可以直接在后面运算
df[ 'Area code' ] = df[ 'Area code' ] * 2
  1. 使用apply函数
df[df['State'].apply(lambda state: state[0] == 'W')].head()
  1. map()函数
d = {'No': False, 'Yes': True}
df['International plan'] = df['International plan'].map(d)
  1. replace函数
d = {'No': False, 'Yes': True}
df = df.replace({'Voice mail plan': d})
  1. drop()函数,
df .drop(['Total charge', 'Total calls'], axis=1, inplace=True)

axis = 1 按照列,inplace = Ture 在原表上进行操作

表格的拼接:
可以直接相加,或者用insert,contact,append等方式

直接相加:
total_calls = df[‘Total day calls’] + df[‘Total eve calls’] +
df[‘Total night calls’] + df[‘Total intl calls’]

insert 方法
df.insert(loc=len(df.columns), column=‘Total calls’, value=total_calls)

contact 方法
df_bind = df.contact([df1,df2], axis = 1) # df1和df2为假设新的两个数据集

缺失值的处理

在做机器学习和数据挖掘方面时,对缺失值的处理十分的重要,其方式有许多种,删除,取平均值将其补充,取特定值将其补充,取邻近值将其补充。
dropna函数

df.**dropna**(self,axis = 0 ,how = 'any',inplace = False)  
'''self不用填,axis = 0行,how = 'any'/ 'all' any是指出现一个缺失值,
all是整行都是缺失值,inplace就是对原来数据是否发生改变'''

findan函数

df['某列'] = df['某列'].**findna**(df['某列'].mean(), inplace = True# 用findna来替换缺失值,也可以使用具体数值。

数据集的导入导出

导入

pd.read_csv(''文件名", sep = ',' , header = 0, index_col =   ,encoding = 'utf-8')
pd. read_table(''文件名", sep = '/t' , header = 0, index_col =  ,
 columns = ,encoding = 'utf-8')
pd.read_excel()  #  参数很多,我就不介绍了

read_csv可以读取.txt文件,csv文件(excel也可以),sep分隔符,默认为逗号(常用分隔符为‘ ’(空格),’/t’(制表符), '/s+ '(s为空格,+代表一个或多个)),header列名,如果文件中保留第一行为列名,则为header = 0,如果文件中没有列名,则header = None,encoding编码模式,可以为gbk,utf-8,ansi。
(个人理解:一般windows输出到各个地方,不管是网页还是其他,使用utf-8,如果其他地方输送到windows,一般为gbk,而ansi用才读取函数读取excel表格比较常用到)

导出

导入和导出类似,函数如下:
pd.to_csv(’’‘数据集’,index = False, header = True) # 是否保留
pd.to_table(self, use_names_over_ids=False)
pd.to_excel(self, excel_writer, sheet_name=‘Sheet1’, na_rep=’’,
float_format=None, columns=None, header=True, index=True,
index_label=None, startrow=0, startcol=0, engine=None,
merge_cells=True, encoding=None, inf_rep=‘inf’, verbose=True,
freeze_panes=None)

结束语

本人还是菜鸟小白,把博客当做一种记录和分享的平台,如果有错误的,欢迎指出啊,共同学习,共同进步,喜欢的可以互相关注,评论,点赞,你们的支持会给我很多勇气,球球了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值