Python数据分析—Pandas1

本文介绍了Python数据分析库Pandas的基础知识,包括Series和DataFrame数据结构,读取数据、数据操作、条件选择,以及缺失值和异常值处理。通过实例展示了如何创建、操作和处理数据,适合数据分析初学者。
摘要由CSDN通过智能技术生成

💖本文收录于【Python数据分析三大库:numpy、pandas、matplotlib】专栏,此专栏主要记录我在B站学习Python数据分析三剑客—numpy、pandas、matplotlib的学习笔记,对于入门数据分析或者着手python数学建模的小白来说特别友好,欢迎订阅!
🌻个人主页:Glion的职场晋升成长之路
📑个人介绍:保研到某985高校,硕士在读中,将在努力成为数据科学家的道路上不断深耕!

🍍0. Pandas 基本介绍

Python Data Analysis Library 或pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。Pandas纳入了大量库和一些标准的数据模型,提供了高效操作大型数据集所需的工具。Pandas提供了大量能使我们快速处理数据的函数和方法。
在使用之前要导入这两个库

import pandas as pd
import numpy as np

🍎1.Pandas 基本数据结构

pandas中有两种常用的基本结构:

  • Series
    • 一维数组,与Numpy中的一维array类似。二者与Python基本数据结构List也很相似。Series能保存不同的数据类型,字符串、布尔值、数字等都能保存在Series中。
  • DataFrame
    • 二维的表格型数据结构。很多功能与R中的data frame类似。可以将DataFrame 理解为Series的容器。以下的内容主要以DataFrame为主。

1.1Pandas 库的series类型

  • 一维Series可以用一维列表初始化:
a=pd.Series([1,3,5,np.nan,6,8])
print(a)

输出的第一列为列表各元素索引,第二列为对应的列表具体值

0    1.0
1    3.0
2    5.0
3    NaN
4    6.0
5    8.0
dtype: float64

可以在pd.Series中用index指定索引号类型,一般不指定的话默认为从0开始的递增数字

s=pd.Series([1,3,5,np.nan,7,9],index=['a','b','c','d','e','f'])
print(s)
a    1.0
b    3.0
c    5.0
d    NaN
e    7.0
f    9.0
dtype: float64
  • 索引-数据的行标签
    某.index可以查看该数组的行标签,即索引号情况。
a.index
#out
RangeIndex(start=0, stop=6, step=1)
s.index
#out
Index(['a', 'b', 'c', 'd', 'e', 'f'], dtype='object')

查看s的具体数值

print(s.values)
print(s[3])
[ 1.  3.  5. nan  7.  9.]
nan
  • 切片操作
a[2:5]
#out
2    5.0
3    NaN
4    6.0
dtype: float64

间隔取数[a:b:c],从a取到b-1,步长为c

s[::2]
#out
a    1.0
c    5.0
e    7.0
dtype: float64
  • 索引赋值
s.index.name='索引'
s
#out
索引
a    1.0
b    3.0
c    5.0
d    NaN
e    7.0
f    9.0
dtype: float64
a=pd.Series([11,22,31,43,52,62])
a.index=list('abcdef')
a
#out
a    11
b    22
c    31
d    43
e    52
f    62
dtype: int64

取出特定索引号上的值,注意此时是左右两边都会取到,不是按照左闭右开来取

s['a':'c']
#out
a    11
b    22
c    31
dtype: int64

1.2Pandas库的DataFrame类型

DataFrame 则是个二维结构,这里首先构造一组时间序列,作为我们的第一维的下标:

#20180101是起点,需要几个日期就用periods=多少来表示
date=pd.date_range('20220615',periods=6)
print(date)
DatetimeIndex(['2022-06-15', '2022-06-16', '2022-06-17', '2022-06-18',
               '2022-06-19', '2022-06-20'],
              dtype='datetime64[ns]', freq='D')

然后创建一个DataFrame结构,所用函数为:xx=pd.DataFrame()

#二维结构内的数据可以用np.random随机生成,随机生成得数据服从正态分布:randn,(6,4)代表6行4列
df=pd.DataFrame(np.random.randn(6,4))

输出结果如下:
在这里插入图片描述

  • 也可以对索引号的行和列进行命名,默认情况下,如果不指定index参数和columns,那么索引号的值将用从0开始的数字替代。`
df=pd.DataFrame(np.random.randn(6,4),index=date,columns=list('ABCD'))
df

在这里插入图片描述

  • 除了向DataFrame中传入二维数组,我们也可以使用字典传入数据:
    字典的每一个key代表一列,其value可以是各种能够转化为Series的对象
df2=pd.DataFrame({'A':1,'B':pd.Timestamp('20181001'),'C':pd.Series(1,index=list(range(4)),dtype=float),'D':np.array([3]*4,dtype=int),'E':pd.Categorical(["test","train","test","train"]),'F':'abc'})
df2

在这里插入图片描述
注意:与Series要求的所有类型都一致不同,DataFrame只要求每一列数据的格式相同:

df2.dtypes

在这里插入图片描述

查看数据

  • 头尾数据
    head和tail方法可以分别查看最前面几行和最后面几行的数据(默认为5):
df.tail(3)

在这里插入图片描述

  • 下标,列标,数据
    下标使用index属性查看,列表使用columns属性查看,具体值使用values查看:
    在这里插入图片描述

🍏2.Pandas读取数据及数据操作

我们将以豆瓣的电影数据作为我们深入了解Pandas的一个示例。

# r表示\不进行转义,''里面是excel的路径
df=pd.read_excel(r'C:\Users\GJH\Blili-homework of Python\课程中用到的数据\豆瓣电影数据.xlsx')
df.head()

在这里插入图片描述

2.1行操作

  • 查看表格的行操作
    df.iloc[a:b]查看a到b-1行的数值情况,df.loc[a:b]表示查看a到b行的数字情况。
    在这里插入图片描述

  • 添加一行

dit={'名字':'复仇者联盟','投票人数':123456,'类型':'剧情/科幻','产地':'美国','上映时间':'2018-05-4 00:00:00','时长':142,'年代':2018,'评分':8.7,'首映地点':'美国'}
s=pd.Series(dit)
s.name=38738
s

在这里插入图片描述

df=df.append(s)
df[-5:]

在这里插入图片描述

  • 删除一行
df=df.drop([38737])
df[-5:]

在这里插入图片描述

2.2列操作

  • 查看表格的列操作
    在这里插入图片描述
  • 增加一列
df['电影ID']=range(1,len(df)+1)
df[:5]

在这里插入图片描述

  • 删除一列
    注意:df.drop()中不写时默认的axis=0,表示删除的是行,如果写axis=1,则表示删除的是列。
    在这里插入图片描述

2.3通过标签选择数据

  • 通过标签选择数据:df.loc[[index].[column]]
    在这里插入图片描述

2.4条件选择

(1)选取产地为美国的所有电影
当进行满足某条件进行筛选时,可以借助布尔值True或Faulse进行判断,然后挑选出Ture的所有行
在这里插入图片描述
(2)筛选出产地为美国且评分大于9分的电影
在这里插入图片描述
(3)筛选出产地为美国或中国大陆且评分大于9分的电影
在这里插入图片描述

🍒3.缺失值和异常值的处理

3.1缺失值处理方法

方法说明
dropna根据标签中的缺失值进行过滤,删除缺失值
fillna对缺失值进行填充
isnull返回一个布尔值对象,判断哪些值是缺失值
notnullisnull的否定式
  • 判断缺失值
    在这里插入图片描述
  • 填充缺失值
    (1)将电影评分的缺失值填充为均值
    在这里插入图片描述
    (2)将确实的电影名称填充为“未知电影”
    在这里插入图片描述
  • 删除缺失值

关于df.dropna()的参数设置:
how=‘all’:删除全为空值的行或列;
how='any’时表示删除只要含有缺失值的行(列)
inplace=True:覆盖之前的数据
axis=0:删除含有缺失值的行(默认情况dropna()就是axis=0
axis=1:删除含有缺失值的列

在这里插入图片描述
pandas 中 inplace 参数在很多函数中都会有,它的作用是:是否在原对象基础上进行修改
在这里插入图片描述

3.2处理异常值

-异常值,即在数据值中存在不合理的值,又称离群点。比如年龄为-1,笔记本电脑重量为1吨等,都属于异常值。
在这里插入图片描述
在这里插入图片描述
注意:对于异常值,一般来说数量都会很少,在不影响整体数据分布的情况下,我们可以直接删除,其他属性的异常值处理,再后面的格式转换部分,进一步讨论。

🍉4.数据保存

数据处理之后,将数据重新保存到movie_data.xlsx

df.to_excel('movie_data.xlsx')#默认保存在当下notebook的路径里面 C:\Users\GJH
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值