Pandas基础操作

本文为 落魄陶陶 原创,转载请注明出处
pandas

Series

    s = pd.Series([1,2,3,None,5,6]) # 默认情况,索引下标是数字
    s = pd.Series([1,2,3,None,5,6],index=['a','b','c','d'])
    s.index
    s.values # 类型为np.array

Series 是对np.array等封装,values为原始的np.array,index为附加

切片

    s[2:5]
    s[::2]

# 索引赋值
```python
    s.index.name='索引'
    s.index=list('abcdef')
    s['a':'c']

DataFrame

构造时间序列

    date = pd.date_range('20180101',periods=6)

创建DataFrame

    df = pd.DataFrame(np.random.randn(6,4))
    df = pd.DataFrame(np.randmo.randn(6,4),index=date,columns=list('ABCD'))
    df2 = pd.DataFrame({'A':1.,'B':pd.Timestamp('20180101'),'C':pd.Series(1,index=list(range(4)),dtype=float),})
    df2.dtypes

查看数据

头尾数据

    df.head() # 默认前五行
    df.head(10)
    df.tail()
    df.tail(4)

下标

使用index属性查看

    df.index

列标使用columns

    df.columns

数据使用values

    df.values

读取数据集数据操作

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

行操作

    df.iloc[0] # 查看第一行
    df.iloc[0:5] # 前开后闭
    df.loc[0:5] # 闭区间

添加行

    dit = {'名字':'复仇者联盟3','投票人数':123456,'影片类型':'剧情/科幻','上映时间':'2018-05-01 00:00:00','时长':120,'年代':2018}
    s = pd.Series(dit)
    s.name = 38738 # name就是index
    df = df.append(s)
    df[-5:]

删除行

    df = df.drop(38738)
    df[-5:]

# 列操作
```python
    df.columns
    df['名字'][:5] # 前五的名字
    df[['名字','类型']] # 多列

增加一列

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

通过标签选择数据

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

条件选择

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

缺失值和异常值处理

dropna fillna isnull notnull

判断缺失值

    df.isnull()
    df['名字'].isnull()
    df[df['名字'].isnull()][:10]

填充缺失值

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

删除缺失值

dropna how=‘all’,inplace=True,axis=0

    df.dropna(inplace=True,axis=0)

处理异常值

    df[df['投票人数']<0]
    df = df[df['投票人数']>0]
    
    df.to_excel('movie_data.xlsx')

数据格式转换

    df['投票人数'].dtype
    df['投票人数']=df['投票人数'].astype(int)
    df.loc[14934,'年代']=2008
    df.drop([31172],inplace=True)

排序

默认排序

    df.sort_values(by='投票人数',ascending=False)
    df.sort_values(by='年代')
    df.sort_values(by=['评分','投票人数'],ascending=False)

统计分析

描述性统计

    df.describe()
    
    df.drop(df[df['年代']>2018].index,inplace=True)
    
    df.index = range(1,len(df))
    
    df['投票人数'].max()
    df['投票人数'].min()
    df['投票人数'].mean()
    df['投票人数'].median()
    df['投票人数'].var()
    df['投票人数'].std()
    df['投票人数'].sum()
    df[['投票人数',''评分]].corr()
    df[['投票人数',''评分]].cov()
    len(df)
    df['产地'].unique()
    df['产地'].replace('USA','美国',inplace=True)
    df['产地'].replace(['西德','苏联'],['德国','俄罗斯'],inplace=True)
    
    df['年代'].unique()
    df['年代'].value_counts()
    df['产地'].value_counts()[:5]
    
    df.to_excel('movie_data.xlsx')

数据透视

    pd.set_option('max_columns',100)
    pd.pivot_table(df,index=['年份'])
    pd.pivot_table(df,index=['年代','产地'])
    pd.pivot_table(df,index=['年代','产地'],values=['评分'])
    pd.pivot_table(df,index=['年代','产地'],values=['投票人数'],aggfunc=np.sum)
    pd.pivot_table(df,index=['产地'],values=['投票人数','评分'],aggfunc=[np.sum,np.min])
    pd.pivot_table(df,index=['产地'],aggfunc=[np.sum,np.min],fill_value=0)
    pd.pivot_table(df,index=['产地'],aggfunc=[np.sum,np.min],fill_value=0,margin=True)
    pd.pivot_table(df,index=['产地'],values=['投票人数','评分'],aggfunc={'投票人数':np.sum,'评分':np.min},fill_value=0)

数据重塑和轴向旋转

层次化索引

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值