Pandas_Day1学习笔记

1.Pandas数据结构和简介

Pandas主要有两种类型的数据结构,分别是Series和DataFrame。

data1.xlsx

名字语文数学英语
jonny885090
zihxiu208880
xiaoming909080

Series可以看做表中的某一列,这里的语文、数学、英语成绩对应的列都是一个Series。
DataFrame则是整个数据表格,由多个列构成。
后续几乎所有的操作,都是基于这些列和表进行的。下面我们分别来认识一下Pandas的两大支柱:Series和DataFrame。

1.1Series和DataFrame

数据表格的三要素:  
- column对应着列名,指定操作哪列数据;  
- index代表索引,告诉我们有多少行数据,索引默认从0开始;  
- value则指代具体的数据值;  

1.2 创建DataFrame和Series

Pandas操作第一步一定是先导入我们的库:import pandas as pd  
创建DataFrame最常用的方式是字典+列表,语句很简单,先是字典外括,然后依次打出每一列的列名及其对应的列值(此处一定要用列表)

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

2.数据读取和存储

2.1 Excel文件读取

2.1.1文件路径的切换  

import os

os.chdir(r'文件路径')

os.chdir是实现系统文件路径切换的方法,在里面输入我们从系统复制的路径地址。  
需要注意的是,路径前面加了一个r,是因为文件路径一般都包含斜杠,而斜杠在Python中会有其他含义(如转义)。在路径前加r相当于告诉Python里面的内容没有其他意思,保证路径被程序完整准确的理解。

2.1.2 pd.read_excel  

data1 = pd.read_excel('data1.xlsx')

data1

上面只赋予Excel名称的读取方式,默认打开的是第一个sheet。当一个Excel文件包含多个sheet时,通过指定具体sheet_name的方式实现更精准读取:

data1 = pd.read_excel('data1.xlsx', sheet_name = 'Sheet1')

data1

2.1.3 header和names

当第一行并不是表头属性时,pandas默认第一行的数据会被识别为表头这个时候我们可以把headers参数设置成None,来告诉Pandas。

data = pd.read_excel('文件名', sheet_name = 'Sheet2', header = None)

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

data = pd.read_excel('文件名', sheet_name = 'Sheet2',

                                    header = None, names = ['姓名', '语文', '数学', '英语'])

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

data = pd.read_excel('文件名', sheet_name = 'Sheet2', header =2)

2.1.4其他参数

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

2.2 csv文件的读取 

Pandas读取csv文件用的是pd.read_csv('具体文件名')

2.2.1 中文路径

data = pd.read_csv('data2.csv',engine = 'python')

2.2.2 编码设置

csv文件有不同的编码形式,utf8和gbk是两种最常见的编码

data_csv = pd.read_csv('data2.csv',engine = 'python', encoding = 'gbk')

2.2.3 分隔符的处理

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

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

2.3 其他文件类型的读取

2.3.1 txt文件的读取

data1 = pd.read_table('对应文件名',seq = '\t')

2.3.2  json文件的读取

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

2.4 存储数据

pd.to_xxx()方法

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

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

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

2.5 查看数据 

1. Pandas中用df.head(n)函数直接可以查看默认的前n行。与之对应,df.tail(n)就可以查看数据尾部的n行数据,

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

3. 了解数据类型和空缺值情况后,我们经常还会对数据某些列做统计层面的分析。df.describe()可以快速计算数值型数据的关键统计指标,像平均数、分位数、标准差等常见指标。

3.数据的基本处理方式——增、删、选、改

3.1 增

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

df['新增的列'] = 'new'
df['新增'] = range(1,len(df) + 1)

3.2 删

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

df.drop('新增的列'axis = 1, inplace = True)

3.3 选

单列 ----df['列名']

df['英语']

多列  -----df[['第一列','第二列','第三列'..]]

df [['语文','数学','英语']]

3.4 改

df['旧列名'] = 某个值或者某列值(列值的数量必须和原数据行数相等

4. 常用数据类型及操作

4.1 字符串

df.info()查看数据类型时,非数值型的列都显示的是object格式

df['temp'].str.replace('-',' ')
#负号替换为空格


df['temp'] = df['temp'].str.replace('-',' ')
#用清洗之后的列替换掉原来列

4.2 数值型

Pandas把带“%”符号的转化率识别成字符串类型,我们需要先拿掉百分号,再将这一列转化为浮点型数据

把9.98%变成了9.98,所以我们还需要让支付转化率除以100,来还原百分数的真实数值

4.3 时间类型

在Excel中常用的时间格式是'2022-12-24'或者'2022/12/24'

一些时候Pandas会把文件中日期格式的字段读取为字符串格式,这里我们先把字符串'2022-12-24'赋值给新增的日期列,然后用to_datetime()函数将字符串类型转换成时间格式

转换成时间格式(这里是datetime64)之后,我们可以用处理时间的思路高效处理这些数据,比如,我现在想知道提取数据这一天离年末还有多少天('2022-12-31'),直接做减法(该函数接受时间格式的字符串序列,也接受单个字符串)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值