Pnadas学习day-01

Pandas学习day-01

import pandas as pd
import numpy as np

Pandas基本数据结构

pandas中有两种基本结构

Series

一维数组,与numpy中得array类似,与python中的基本数据结构List也相近。Series能保存不同的数据类型。

DataFrame

二维的表格型数据结构。

Pandas的Series类型

一维Series可以用一维列表初始化

s=pd.Series([1,3,5,np.nan,6,8])
s
0    1.0
1    3.0
2    5.0
3    NaN
4    6.0
5    8.0
dtype: float64
s=pd.Series([1,3,5,np.nan,6,8],index=['a','b','c','d','e','f'])
s
a    1.0
b    3.0
c    5.0
d    NaN
e    6.0
f    8.0
dtype: float64

索引数据的行标签

s.index
Index(['a', 'b', 'c', 'd', 'e', 'f'], dtype='object')
s.values
array([ 1.,  3.,  5., nan,  6.,  8.])
s[0]
1.0
s[3]
nan

切片操作

s[2:5]
c    5.0
d    NaN
e    6.0
dtype: float64
s[::2]
a    1.0
c    5.0
e    6.0
dtype: float64

索引赋值

s.index.name='索引'
s
索引
a    1.0
b    3.0
c    5.0
d    NaN
e    6.0
f    8.0
dtype: float64

pandas的DataFrame类型

构造一个时间序列

date=pd.date_range('20180101',periods=6)
date
DatetimeIndex(['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04',
               '2018-01-05', '2018-01-06'],
              dtype='datetime64[ns]', freq='D')

传入二维数组

df=pd.DataFrame(np.random.randn(6,4),index=date,columns=list('ABCD'))
df

ABCD2018-01-010.2763670.235869-0.8633730.7857982018-01-02-0.5858900.142942-0.504779-1.3700402018-01-03-0.607308-0.9835480.3108150.3384972018-01-040.025879-0.442640-0.8624321.2046142018-01-05-0.2781210.2727110.491046-0.1144472018-01-06-0.042118-0.761489-2.086405-0.566671

使用字典传入数据

df2=pd.DataFrame({'A':1,
                 'B':pd.Timestamp('20180101'),
                 '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

ABCDEF012018-01-011.03testabc112018-01-011.03trainabc212018-01-011.03testabc312018-01-011.03trainabc

查看数据

head和tail查看头尾几行数据,默认为5。

df.head()

ABCD2018-01-010.2763670.235869-0.8633730.7857982018-01-02-0.5858900.142942-0.504779-1.3700402018-01-03-0.607308-0.9835480.3108150.3384972018-01-040.025879-0.442640-0.8624321.2046142018-01-05-0.2781210.2727110.491046-0.114447

df.tail(3)

ABCD2018-01-040.025879-0.442640-0.8624321.2046142018-01-05-0.2781210.2727110.491046-0.1144472018-01-06-0.042118-0.761489-2.086405-0.566671

下标,列标,数据

下标使用index

df.index
DatetimeIndex(['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04',
               '2018-01-05', '2018-01-06'],
              dtype='datetime64[ns]', freq='D')

列标使用columns属性查看

df.columns
Index(['A', 'B', 'C', 'D'], dtype='object')

数据值使用values查看

df.values
array([[ 0.27636662,  0.23586885, -0.86337336,  0.78579775],
       [-0.58588988,  0.14294223, -0.50477922, -1.37003977],
       [-0.60730841, -0.98354839,  0.31081542,  0.33849741],
       [ 0.02587881, -0.44264039, -0.86243218,  1.20461397],
       [-0.27812082,  0.27271064,  0.49104565, -0.11444685],
       [-0.04211835, -0.76148874, -2.0864052 , -0.56667069]])

Pandas读取数据及数据操作

df=pd.read_excel('豆瓣电影数据.xlsx')

行操作

df.iloc[0]
名字                   肖申克的救赎
投票人数                 692795
类型                    剧情/犯罪
产地                       美国
上映时间    1994-09-10 00:00:00
时长                      142
年代                     1994
评分                      9.6
首映地点                 多伦多电影节
Name: 0, dtype: object
df.iloc[0:5]

名字投票人数类型产地上映时间时长年代评分首映地点0肖申克的救赎692795.0剧情/犯罪美国1994-09-10 00:00:0014219949.6多伦多电影节1控方证人42995.0剧情/悬疑/犯罪美国1957-12-17 00:00:0011619579.5美国2美丽人生327855.0剧情/喜剧/爱情意大利1997-12-20 00:00:0011619979.5意大利3阿甘正传580897.0剧情/爱情美国1994-06-23 00:00:0014219949.4洛杉矶首映4霸王别姬478523.0剧情/爱情/同性中国大陆1993-01-01 00:00:0017119939.4香港

iloc与loc的区别(loc左闭右闭的区间)

df.loc[0:5]

名字投票人数类型产地上映时间时长年代评分首映地点0肖申克的救赎692795.0剧情/犯罪美国1994-09-10 00:00:0014219949.6多伦多电影节1控方证人42995.0剧情/悬疑/犯罪美国1957-12-17 00:00:0011619579.5美国2美丽人生327855.0剧情/喜剧/爱情意大利1997-12-20 00:00:0011619979.5意大利3阿甘正传580897.0剧情/爱情美国1994-06-23 00:00:0014219949.4洛杉矶首映4霸王别姬478523.0剧情/爱情/同性中国大陆1993-01-01 00:00:0017119939.4香港5泰坦尼克号157074.0剧情/爱情/灾难美国2012-04-10 00:00:0019420129.4中国大陆

添加一行

dic={'名字':'复仇者联盟3',
     '投票人数':123456,
     '类型':'剧情/科幻',
     '产地':'美国',
    '上映时间':2018-5-4,
    '时长':142,
    '年代':2018,
    '评分':np.nan,
    '首映地点':'美国'}
s=pd.Series(dic)
s.name=38738
s
名字      复仇者联盟3
投票人数    123456
类型       剧情/科幻
产地          美国
上映时间      2009
时长         142
年代        2018
评分         NaN
首映地点        美国
Name: 38738, dtype: object
df=df.append(s)
df.tail(1)

Unnamed: 0名字投票人数类型产地上映时间时长年代评分首映地点38738NaN复仇者联盟3123456.0剧情/科幻美国20091422018NaN美国

删除一行

df = df.drop([38738])
df.tail(5)

名字投票人数类型产地上映时间时长年代评分首映地点38733神学院 S46.0Adult法国1905-06-05 00:00:005819838.6美国387341935年57.0喜剧/歌舞美国1935-03-15 00:00:009819357.6美国38735血溅画屏95.0剧情/悬疑/犯罪/武侠/古装中国大陆1905-06-08 00:00:009119867.1美国38736魔窟中的幻想51.0惊悚/恐怖/儿童中国大陆1905-06-08 00:00:007819868.0美国38737列宁格勒围困之星火战役 Блокада: Фильм 2: Ленинградский ме…32.0剧情/战争苏联1905-05-30 00:00:009719776.6美国

列操作

df.columns
Index(['名字', '投票人数', '类型', '产地', '上映时间', '时长', '年代', '评分', '首映地点'], dtype='object')
df['名字'][:5]
0    肖申克的救赎
1      控方证人
2     美丽人生
3      阿甘正传
4      霸王别姬
Name: 名字, dtype: object

增加列

df['序号']=range(1,len(df)+1)
df.head()

名字投票人数类型产地上映时间时长年代评分首映地点序号0肖申克的救赎692795.0剧情/犯罪美国1994-09-10 00:00:0014219949.6多伦多电影节11控方证人42995.0剧情/悬疑/犯罪美国1957-12-17 00:00:0011619579.5美国22美丽人生327855.0剧情/喜剧/爱情意大利1997-12-20 00:00:0011619979.5意大利33阿甘正传580897.0剧情/爱情美国1994-06-23 00:00:0014219949.4洛杉矶首映44霸王别姬478523.0剧情/爱情/同性中国大陆1993-01-01 00:00:0017119939.4香港5

删除列

df = df.drop('序号',axis=1)
df[-5:]

名字投票人数类型产地上映时间时长年代评分首映地点38733神学院 S46.0Adult法国1905-06-05 00:00:005819838.6美国387341935年57.0喜剧/歌舞美国1935-03-15 00:00:009819357.6美国38735血溅画屏95.0剧情/悬疑/犯罪/武侠/古装中国大陆1905-06-08 00:00:009119867.1美国38736魔窟中的幻想51.0惊悚/恐怖/儿童中国大陆1905-06-08 00:00:007819868.0美国38737列宁格勒围困之星火战役 Блокада: Фильм 2: Ленинградский ме…32.0剧情/战争苏联1905-05-30 00:00:009719776.6美国

通过标签选择数据

df.loc[[index],[colunm]] 通过标签选择数据

df.loc[1,'名字']
'控方证人'
df.loc[[1,3,5,7,9],['名字','评分']]

名字评分1控方证人9.53阿甘正传9.45泰坦尼克号9.47新世纪福音战士剧场版:Air/真心为你 新世紀エヴァンゲリオン劇場版 Ai9.49这个杀手不太冷9.4

条件选择

选择产地为美国的电影

df[df['产地']=='美国'][:5]

Unnamed: 0名字投票人数类型产地上映时间时长年代评分首映地点00肖申克的救赎692795.0剧情/犯罪美国1994-09-10 00:00:0014219949.6多伦多电影节11控方证人42995.0剧情/悬疑/犯罪美国1957-12-17 00:00:0011619579.5美国33阿甘正传580897.0剧情/爱情美国1994-06-23 00:00:0014219949.4洛杉矶首映55泰坦尼克号157074.0剧情/爱情/灾难美国2012-04-10 00:00:0019420129.4中国大陆66辛德勒的名单306904.0剧情/历史/战争美国1993-11-30 00:00:0019519939.4华盛顿首映

选择产地为美国的电影,并且评分大于9分

df[(df['产地']=='美国')&(df['评分']>9)][:5]

Unnamed: 0名字投票人数类型产地上映时间时长年代评分首映地点00肖申克的救赎692795.0剧情/犯罪美国1994-09-10 00:00:0014219949.6多伦多电影节11控方证人42995.0剧情/悬疑/犯罪美国1957-12-17 00:00:0011619579.5美国33阿甘正传580897.0剧情/爱情美国1994-06-23 00:00:0014219949.4洛杉矶首映55泰坦尼克号157074.0剧情/爱情/灾难美国2012-04-10 00:00:0019420129.4中国大陆66辛德勒的名单306904.0剧情/历史/战争美国1993-11-30 00:00:0019519939.4华盛顿首映

选择产地为美国或者中国大陆的电影,并且评分大于9分

df[((df.产地=='美国')|(df.产地=='中国大陆'))&(df.评分>9)][:5]

Unnamed: 0名字投票人数类型产地上映时间时长年代评分首映地点00肖申克的救赎692795.0剧情/犯罪美国1994-09-10 00:00:0014219949.6多伦多电影节11控方证人42995.0剧情/悬疑/犯罪美国1957-12-17 00:00:0011619579.5美国33阿甘正传580897.0剧情/爱情美国1994-06-23 00:00:0014219949.4洛杉矶首映44霸王别姬478523.0剧情/爱情/同性中国大陆1993-01-01 00:00:0017119939.4香港55泰坦尼克号157074.0剧情/爱情/灾难美国2012-04-10 00:00:0019420129.4中国大陆

缺失值及异常值处理方法

缺失值处理方法

方法 说明
dropna 删除缺失值
fillna 填充缺失值
isnull 返回布尔值对象,判断缺失值
notnull isnull的否定式

判断缺失值

df[df['评分'].isnull()][:10]

Unnamed: 0名字投票人数类型产地上映时间时长年代评分首映地点38738NaN复仇者联盟3123456.0剧情/科幻美国20091422018NaN美国

填充缺失值

df['评分'].fillna(np.mean(df['评分']),inplace=True)
df[-5:]

Unnamed: 0名字投票人数类型产地上映时间时长年代评分首映地点3873438734.01935年57.0喜剧/歌舞美国1935-03-15 00:00:009819357.600000美国3873538735.0血溅画屏95.0剧情/悬疑/犯罪/武侠/古装中国大陆1905-06-08 00:00:009119867.100000美国3873638736.0魔窟中的幻想51.0惊悚/恐怖/儿童中国大陆1905-06-08 00:00:007819868.000000美国3873738737.0列宁格勒围困之星火战役 Блокада: Фильм 2: Ленинградский ме…32.0剧情/战争苏联1905-05-30 00:00:009719776.600000美国38738NaN复仇者联盟3123456.0剧情/科幻美国200914220186.935704美国

删除缺失值

df.dropna() 参数
how=’all’ 删除全为空值的行或者列
inplace=True 覆盖之前的数据
axis=0 选择行或者列

处理异常值

df[df.投票人数<0]

Unnamed: 0名字投票人数类型产地上映时间时长年代评分首映地点1977719777.0皇家大贼 皇家大-80.0剧情/犯罪中国香港1985-05-31 00:00:006019856.3美国1978619786.0日本的垃圾去中国大陆 にっぽんの”ゴミ” 大陆へ渡る ~中国式リサイクル錬-80.0纪录片日本1905-06-26 00:00:006020047.9美国1979719797.0女教徒-118.0剧情法国1966-05-06 00:00:0013519667.8美国

数据保存

df.to_excel('moive_data.xlsx')

Original: https://blog.csdn.net/qq_38398516/article/details/121099248
Author: 抱紧我的糖果罐
Title: Pnadas学习day-01

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/743491/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球