新建一个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
 

 

 
 

技术
©2019-2020 Toolsou All rights reserved,
[数据结构]八大排序算法(C语言)总结G1垃圾收集器面试题Android中使用微信H5支付时支付结果刷新问题32-jdbc工具类大学里要参加竞赛吗?都有哪些竞赛可以参加?震惊!!C++居然可以发出声音!C语言之链表入门(超详解)Java实现一个疫情人数管理系统如何用python实现斐波那契数列的前100个MyBatis循环Map(高级用法)