python数据分析-pandas核心包

###series介绍
#一种类似于以为数组的对象,由一组数据和一组与之相关的数据标签(索引)组成。
import pandas as pd

pd.Series([2,3,4,5])

sr = pd.Series([2,3,4,5],index=['a','b','c','d'])

pd.Series(np.arange(5))

sr[0]   #索引和标签都可以作为索引

sr+2
sr+sr   #相同大小的加减乘除

sr[0:2] #切片
#通用函数
np.abs(sr)
#布尔型索引
sr[sr>0]


sr = pd.Series({'a':1,'b':2})
sr
sr[0]

'a' in sr
'c' in sr


for i in sr:
    print(i)    #输出的是值,并非索引
    
sr.index
sr.index[0]

sr.values

sr = pd.Series([1,2,3,4],index=['a','b','c','d'])
sr[['a','c']]
sr['a':'c'] #通过标签切片,前包后也包


######整数索引
#如果索引是整数类型,则根据整数进行下标获取值时总是面向标签的
#解决方法:loc属性(将索引解释为标签)和iloc属性(将索引解释为下标)

sr = pd.Series(np.arange(20))
sr
sr2 = sr[10:].copy()
sr2
sr2[10]

sr2.loc[10] #10为标签
sr2.iloc[9] #9为索引



#####数据对齐
sr1 = pd.Series([12,23,34],index=['c','a','d'])
sr2 = pd.Series([21,32,43],index=['a','d','c'])
sr1+sr2

##pandas在进行两个Series对象的运算时,会按标签进行对齐然后计算。

sr1 = pd.Series([12,23,34],index=['c','a','d'])
sr2 = pd.Series([21,32,43,11],index=['a','d','c','b'])
sr1+sr2
#b为缺失值NaN

sr1 = pd.Series([12,23,34],index=['c','a','d'])
sr2 = pd.Series([21,32,43],index=['a','b','c'])

sr1+sr2
sr1.add(sr2)
sr1.add(sr2,fill_value=0)   #填充


##########Series缺失值的处理
sr=sr1+sr2
sr.isnull()
sr.notnull()

#扔掉缺失值
sr[sr.notnull()]
sr.dropna()

#填充缺失值
sr.fillna(0)

sr.fillna(sr.mean())    #默认跳过nan值,不需要考虑nan的数量



#######dataframe
#dataframe是一个表格型的数据结构,含有一组有序的列。#
#dataframe可以被看作是由Series组成的字典,并且共有一个索引

#DataFrame的创建
df = pd.DataFrame({'one':[1,2,3],'two':[4,5,6]},index=['a','b','c'])

pd.DataFrame({'one':pd.Series([1,2,3],index=['a','b','c']),
              'two':pd.Series([1,2,3,4],index=['a','b','c','d'])})

df = pd.DataFrame({'one':pd.Series([1,2,3,5],index=['a','b','c','e']),
              'two':pd.Series([1,2,3,4,5],index=['a','b','c','d','e'])})


pd.read_csv('/Users/terry/Desktop/data/text.csv')

df.index    
df.values
#NaN是特殊的浮点值
#转置后,一列都会变成统一的变量类型
df.T
df.columns
#获取快速统计
df.describe()


#####DataFrame索引和切片
df['one']['a']  #先列后行
df.loc['a','one']

df['one']

df.loc['a',]
df.loc['a',:]

df.loc[['a','c'],'two']

#########DataFrame数据对齐与缺失数据处理
#DataFrame对象在运算时,同样会进行数据对齐,其行索引和列索引分别对齐
df2 = pd.DataFrame({'two':[1,2,3,4],'one':[4,5,6,7]},index=['c','d','b','a'])

df
df2

df+df2

df.fillna(0)
df.dropna()
df.loc['d','two']=np.nan
df.loc['c','two']=np.nan
df  
df.dropna(how='all')    #默认参数是any

df2.loc['c','two']=np.nan
df2.dropna(axis=1) 


df.mean()   #长度为2的series对象
df.mean(axis=1) #对行求平均
df.sum()    
df.sum(axis=1)

df.sort_values(by='one')
df.sort_values(by='one',ascending=False)   #降序,默认为生序
 
df.sort_values(by='a',ascending=False,axis=1)
 
df.sort_index()
df.sort_index(ascending=False,axis=1)

#########时间处理对象
import datetime

datetime.datetime.strptime('2010-01-01','%Y-%m-%d')

import dateutil
dateutil.parser.parse('2010-01-01')
pd.to_datetime(['2010-01-01','2010-Feb-02'])

######时间对象生成
pd.date_range('2010-01-01','2010-05-01')
pd.date_range('2010-01-01',periods=60)
pd.date_range('2010-01-01',periods=60,freq='H') #W周,W-MON每周一,B工作日

dt = pd.date_range('2010-01-01',periods=60) #生成的每个值都为类似时间戳
dt[0].to_pydatetime()   #可以转换为python库中的时间对象

######时间序列

pd.date_range('2010-01-01','2010-05-01')

sr = pd.Series(np.arange(100),index=pd.date_range('2018-01-01',periods=100))
sr

sr['2018-03']
sr['2018':'2018-03']

sr.resample('W').sum()
sr.resample('M').mean()

sr.truncate(before='2018-02-03')    #保留切之后的
sr.truncate(after='2018-02-03') #保留切之前的


########文件读取
pd.read_csv('/Users/terry/Downloads/'+
            '数据分析课件资料/FinanceAnalysis/601318.csv')

pd.read_csv('/Users/terry/Downloads/'+
            '数据分析课件资料/FinanceAnalysis/601318.csv',
            index_col=0)
#此时时间为字符串
pd.read_csv('/Users/terry/Downloads/'+
            '数据分析课件资料/FinanceAnalysis/601318.csv',
            index_col='date')   
 #将时间字符串改成时间序列,true为自行查找可以作为时间序列的值,并且转换
pd.read_csv('/Users/terry/Downloads/'+
            '数据分析课件资料/FinanceAnalysis/601318.csv',
            index_col='date',parse_dates=True) 

pd.read_csv('/Users/terry/Downloads/'+
            '数据分析课件资料/FinanceAnalysis/601318.csv',
            index_col='date',parse_dates=['date'])

####若果csv文件中没有列名,第一行会自动转换为列索引
pd.read_csv('/Users/terry/Downloads/'+
            '数据分析课件资料/FinanceAnalysis/601318.csv',header=None)
pd.read_csv('/Users/terry/Downloads/'+
            '数据分析课件资料/FinanceAnalysis/601318.csv',
            header=None,
            name=list('abcdefgh'))

#############文件操作

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值