python数据分析小白自学第二天-pandas基础用法


前言


今天学了pandas的基础用法,考虑到pandas中操作的很多,一时无法全部掌握熟练,这篇文章将pandas常用的一些操作进行总结,方便及时查阅复习。

一、pandas创建和读取存储

1.创建Dataframe和Series

创建DataFrame最常用的方式是字典+列表,语句很简单,先是字典外括,然后依次打出每一列的列名及其对应的列值(此处一定要用列表),这里对应关系重要,列的顺序并不重要。

import pandas as pd

df1 = pd.DataFrame({'工资':[15000,7000,12000,23000],'绩效分':[95,59,82,100],
                    '备注':['优秀','不及格','良好','最佳']},
                  index = ['阿粥','老六','老王','老龚'])
         
                  
#把df1里面的工资列作为新的Series创建
s1 = df1['工资']  

#查看s1的类型
print(type(s1))

s1

直接读取现有数据

import pandas as pd 
# 创建数据 
data = { "星期": ["星期一", "星期二", "星期三"], "天气": ["晴", "阴", "雨"], "温度": [29, 27, 22] } 
# 创建DataFrame 
df = pd.DataFrame(data) 
# 显示DataFrame 
print(df)
1.1创建series

先说函数 pandas.Series( data, index, dtype, name, copy)
参数说明:

    data:一组数据(ndarray 类型),元组、列表、字典、数组等都可以

    index:数据索引标签,如果不指定,默认从 0 开始;如果指定的话,使用列表或者元组格式

                    进行指定,其中列表或者元组的长度需要和 data的数据行数一致。此处索引指的是

                    行索引。

    dtype:数据类型,默认会自己判断。

    name:设置名称。# 也可以不设置

    copy:拷贝数据,默认为 False。

2.数据读取和存储excel和csv

2.1excel读取

首先导入os这个系统模块,把Python切换到这个路径下:

import os  
os.chdir(r'C:\works\WRI\Python电商数据分析实战\第二章 Pandas快速入门')  

os.chdir是实现系统文件路径切换的方法,在里面输入我们从系统复制的路径地址。
需要注意的是,路径前面加了一个r,是因为文件路径一般都包含斜杠,而斜杠在Python中会有其他含义(如转义)。在路径前加r相当于告诉Python里面的内容没有其他意思,保证路径被程序完整准确的理解。
在这里插入图片描述
注意:
我们的data1.xlsx中sheet1的数据源长这样:
Image Name
对比上面的结果,发现Pandas很智能的把第一行当作了表头来处理,实际数据则从第二行开始。
假如我们遇到了sheet2中的数据,在Excel文件中当时只保存了源数据,如下图所示:

Image Name
如果用Pandas直接读取,默认第一行当作表头的规则就显得不那么智能了:

Image Name
这个时候我们可以把headers参数设置成None,来告诉Pandas我们的数据中没有表头:

Image Name
如果headers = None,默认的column表头是从0到3的几个数字,很不美观。所以,我们可以在读取的时候通过names参数,把表头设置成我们预期的内容即可:

Image Name
当然,headers除了设置成None,还可以设置成数字,代表在读取时把第几行数据作为表头。例如我们想要把Sheet1中的小明所在的第二行作为表头,把headers设置成1即可(日常计数是从1开始,但Python里面的计数是从0开始):

Image Name
这样一来,可怜的小明就成为了表头。
其他参数

  • index_col指定索引列
  • usecols指定读取部分列
  • nrows指定读取部分行
  • prefix给表头设置前缀
  • dtype和字典结合,读取时为每一列数据设置格式
2.2csv读取

Pandas读取csv文件用的是pd.read_csv(‘具体文件名’)的方法,如下图所示。不过Pandas在Excel和csv文件的读取上有很高的相似性,上节讲的大多数规则和参数也都是用于csv文件的读取。
需要注意的是,在实际操作中Excel文件的读取一般不会有什么问题,但csv的读取由于中文路径和编码等问题是报错的高发区,接下来我们重点看看csv文件的三个注意点以及如何避免错误。

2.2.1中文路径

当文件路径是中文时直接读取,在一些Python版本里会报错。因为Python默认的读取引擎是C语言,它在处理中文时容易出问题。这个时候把读取引擎参数engine设置为Python就可以解决:


data = pd.read_csv('data2.csv',engine = 'python')
2.2.2编码问题

csv文件有不同的编码形式,utf8和gbk是两种最常见的编码。类似于一把钥匙对一个锁,如果文件是gbk编码的锁,那么用utf8的钥匙就算拧断也打不开,Pandas读取时默认是utf-8的编码格式。
通过设置encoding参数来指定文件编码格式,在读取gbk和其他编码文件的时候需要设置成对应编码即可解决问题:
在这里插入图片描述

2.2.3 分隔符的处理

Pandas的read_csv方法在读取csv文件时默认是以逗号作为分隔符来打开的(这也是绝大部分csv文件的分割方式),但如果当文件本身的分割使用的是其他分隔符,就需要在读取时设置好seq参数:

data2 = pd.read_csv('data2.csv',seq = '\t')  

上面一串代码打开的文件是以\t为分隔符的。

2.3其他文件类型的读取
2.3.1 txt文件的读取

Pandas读取txt文件用的是pd.read_table(),需要在读取时输入txt文件的名称和分隔符(这里是必须的):

data1 = pd.read_table('对应文件名',seq = '\t')
2.3.2 json文件的读取

Json文件是一种类字典形式的文件,在读取时用pd.read_json()方法。

Excel和csv是最主要面对的两种文件形式,其他文件类型的读取这里只简单提及,只是打开的方法有所差异,大部分参数也都是通用的。

2.4 存储数据

当我们对数据进行读取、处理和分析之后,往往需要把结果数据存储起来。
在Pandas中数据存储非常方便,用的是pd.to_xxx()方法(xxx是你期望存储的文件形式):

data.to_excel('data1.xlsx')  
data.to_csv('data1.csv')  

默认的存储方式会把索引也作为一列存储,如果我们不希望索引保存,设置index=False就可以:

data.to_excel('xxx.xlsx',index = False)  

二、pandas基本操作与常用函数

1 查看数据head和tail

很多时候我们想要查看数据的某个片段,来确认读取或者处理之后的数据是否符合预期,应该如何操作呢?

Pandas中用df.head()函数直接可以查看默认的前5行。与之对应,df.tail()就可以查看数据尾部的5行数据,这两个参数内可以传入一个数值来自定义查看的行数,例如df.head(6)表示查看前6行数据和用df.tail(4)查看最后4行数据:

Image Name

2.基本信息info

数据的行列数,每一列是否有空缺值存在,各列的数据格式分别是什么,这些信息对于分析师来说也至关重要。
用df.info()可以帮助我们一步摸清各列数据的类型,以及缺失情况:

Image Name
上面的信息全面描述了数据集的行列数、对应名称、每一列的数据类型、有多少条非空数据以及数据集的大小,非常方便。

3.数据统计函数describe

在查看了数据样例,了解数据类型和空缺值情况后,我们经常还会对数据某些列做统计层面的分析。

Pandas依然可以一键搞定,它的df.describe()可以快速计算数值型数据的关键统计指标,像平均数、分位数、标准差等常见指标。

Image Name
但是!我们本来有5列数据,为什么返回结果只有两列?那是因为这个操作只针对数值型的列,非数值型的列本身也无法得出完整的统计信息。其中count是统计每一列的有多少个非空数值,mean、std、min、max对应的分别是该列的均值、标准差、平均值和最大值,25%、50%、75%对应的则是具体分位数大小。

4.基本增删改查操作

4.1增

增加列用的是df[‘新列名’] = 新列值的方式,在原数据基础上赋值即可:

Image Name

4.2删(drop)

我们用drop函数制定删除对应的列,axis = 1表示针对列的操作,inplace为True,则直接在源数据上进行修改,否则源数据会保持原样。
Image Name

4.3选

我们想要选取某一列数据应该怎么操作?df[‘列名’]即可:

Image Name
选取多列呢?需要用括号内的列表来传递df[[‘第一列’,‘第二列’,‘第三列’…]]:
Image Name

4.4改

数据的更改和新增操作很相近,用df[‘旧列名’] = 某个值或者某列值(列值的数量必须和原数据行数相等),就完成了对原列数值的修改。

总结

以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用和读取存储,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法,明天继续加油!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值