利用Python处理Excel数据——pandas库

数据分析 专栏收录该内容
3 篇文章 0 订阅

新建一个excel表格(table1.csv)用于案例讲解:

一、导库

import pandas as pd
import numpy as np

二、读取数据

df = pd.read_excel('table1.xlsx') # 相对路径
# df = pd.read_excel(r'E:\Anaconda\hc\dataScience\table1.csv') # 绝对路径

三、显示数据

1.显示数据的行与列数

df.shape
(6, 5)

2.显示数据格式dtpyes

df.dtypes
Name      object
Age        int64
Sex        int64
Class      int64
Score    float64
dtype: object

3.显示列名

df.columns
Index(['Name', 'Age', 'Sex', 'Class', 'Score'], dtype='object')

4.显示前数据前2行

df.head(2)
 NameAgeSexClassScore
0Tom19116206180.0
1Jack20115205190.0

5.显示数据后3行

df.tail(3)
 NameAgeSexClassScore
3Tony18017046290.0
4Tim190162051NaN
5Bob22113202280.0

6.显示数据唯一值(unique函数)

df['Score'].unique()
array([ 80.,  90., 100.,  nan])

7.对第几行数据不读取

# 没有读取第2行
df1 = pd.read_excel('table1.csv',skiprows=[2] ) 
df1
 NameAgeSexClassScore
0Tom19116206180.0
1Alan181170461100.0
2Tony18017046290.0
3Tim190162051NaN
4Bob22113202280.0

8.对缺失值进行识别

# 所有缺失值显示为True
df.isnull()
 NameAgeSexClassScore
0FalseFalseFalseFalseFalse
1FalseFalseFalseFalseFalse
2FalseFalseFalseFalseFalse
3FalseFalseFalseFalseFalse
4FalseFalseFalseFalseTrue
5FalseFalseFalseFalseFalse

四、清洗数据

1.删除空值 (dropna函数)

df2 = df.dropna(how='any')
df2
 NameAgeSexClassScore
0Tom19116206180.0
1Jack20115205190.0
2Alan181170461100.0
3Tony18017046290.0
5Bob22113202280.0

2.填充空值(fillna函数)

df3 = df.fillna(value=0)
df3
 NameAgeSexClassScore
0Tom19116206180.0
1Jack20115205190.0
2Alan181170461100.0
3Tony18017046290.0
4Tim1901620510.0
5Bob22113202280.0

3.用均值对空值进行填充

df4 = df['Score'].fillna(df['Score'].mean())
df4
0     80.0
1     90.0
2    100.0
3     90.0
4     88.0
5     80.0
Name: Score, dtype: float64

4.更改数据格式

df1['Score'].astype('int64')
0     80
1     90
2    100
3     90
5     80
Name: Score, dtype: int64

(注:如果存在空值,更改数据格式会报错!)

5.更改列名

df5 = df.rename(columns={'Score': 'score'})
df5
 NameAgeSexClassscore
0Tom19116206180.0
1Jack20115205190.0
2Alan181170461100.0
3Tony18017046290.0
4Tim190162051NaN
5Bob22113202280.0

6.对列表内的值进行替换(replace函数)

df6 = df['Name'].replace('Bob', 'bob')
df6
0     Tom
1    Jack
2    Alan
3    Tony
4     Tim
5     bob
Name: Name, dtype: object

五、数据预处理

1.对数据进行排序

df.sort_values(by=['Score'])
 NameAgeSexClassScore
0Tom19116206180.0
5Bob22113202280.0
1Jack20115205190.0
3Tony18017046290.0
2Alan181170461100.0
4Tim190162051NaN

(注:默认升序,且空值在后面)

2.数据分组

①单一条件分组

# 如果Score列的值>=85,Score列显示high,否则显示low
# group列为增加列
df['group'] = np.where(df['Score'] > 85,'high','low')
df
 NameAgeSexClassScoregroup
0Tom19116206180.0low
1Jack20115205190.0high
2Alan181170461100.0high
3Tony18017046290.0high
4Tim190162051NaNlow
5Bob22113202280.0low

②多个条件分组

# 利用loc函数,进行多列查询
# sign为增加列
df.loc[(df['Sex'] == 1) & (df['Age']>= 19), 'sign']=1
df
 NameAgeSexClassScoregroupsign
0Tom19116206180.0low1.0
1Jack20115205190.0high1.0
2Alan181170461100.0highNaN
3Tony18017046290.0highNaN
4Tim190162051NaNlowNaN
5Bob22113202280.0low1.0

六、数据提取

1.按标签提取(loc函数)

df.loc[0:3]
 NameAgeSexClassScoregroupsign
0Tom19116206180.0low1.0
1Jack20115205190.0high1.0
2Alan181170461100.0highNaN
3Tony18017046290.0highNaN

2.按位置进行提取(iloc函数)

①按区域提取

df.iloc[:4, :5]
 NameAgeSexClassScore
0Tom19116206180.0
1Jack20115205190.0
2Alan181170461100.0
3Tony18017046290.0

②按位置提取

#[0, 2, 5] 代表指定的行,[0, 1, 5] 代表指定的列
df.iloc[[0, 2, 5],[0, 1, 5]]
 NameAgegroup
0Tom19low
2Alan18high
5Bob22low

3.按条件提取(isin与loc函数)

①用isin函数进行判断

# 判断Sex是否为1
df['Sex'].isin([1])
0     True
1     True
2     True
3    False
4    False
5     True
Name: Sex, dtype: bool
 
 NameAgeClass
0Tom19162061
1Jack20152051
2Alan18170461
5Bob22132022

②用loc函数进行判断

# Sex为1,分数大于85
df1.loc[(df1['Sex'] == 1) & (df1['Score'] > '85'), ['Name','Age','Class']]

③先判断结果,将结果为True的提取

# 先判断Score列里是否包含80和90,然后将复合条件的数据提取出来。
df.loc[df['Score'].isin(['80','90'])]
 NameAgeSexClassScoregroupsign
0Tom19116206180.0low1.0
1Jack20115205190.0high1.0
3Tony18017046290.0highNaN
5Bob22113202280.0low1.0

 

 

 

 
©️2022 CSDN 皮肤主题:终极编程指南 设计师:CSDN官方博客 返回首页

打赏作者

AI阿聪

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值