pandas基础

文件读取与写入

  • 文件读取的格式:
    pd.read_csv(‘文件名’)
    pd.read_txt(‘文件名’)
    pd.read_excel(‘文件名’) 前提:有xlrd包
    read_hdf ,read_sql,read_json,read_html
    还有stata,sas,clipboard,pickle
  • 写入文件格式:
    data.to_csv(‘文件名’,index=False) #保存时除去行索引
    data.to_excel(‘name.xlsx’, sheet_name=‘Sheet1’) 前提:有openpyxl包

基本数据结构

1. Series

  • Series有四个属性为值(value),索引(index),名字(name),类型(dtype)
    eg.
    name = pd.Series(np.random.randn(2),index=[‘a’,‘b’],name=‘这是一个Series’,dtype=‘float64’)
    output:
    a 1.433496
    b -0.005432
    Name: 这是一个Series, dtype: float64
  • 通过索引取元素:name[‘a’]

2. DataFrame

  1. DataFrame有名称的矩阵,框架:
    -index是行的名称,columns是列名 pd.DataFrame(np.random.randn(6,4),index=dates,columns = [‘a’,‘b’,‘c’,‘d’])
    -按字典形式创建:pd.DataFrame({‘col1’:list(‘abcde’),‘col2’:range(5,10),‘col3’:[1.3,2.5,3.6,4.6,5.8]}, index=list(‘一二三四五’))

  2. 修改行/列名:df.rename(index/columns={‘oldname’:‘newname’})

  3. 索引对齐特性:算数运算时,索引相同的项对应运算
    df1 = pd.DataFrame({‘A’:[1,2,3]},index=[1,2,3])
    df2 = pd.DataFrame({‘A’:[1,2,3]},index=[3,1,2])
    df1-df2 #由于索引对齐,因此结果不是0

  4. 删除,可以使用drop函数或del或pop
    df.drop(index=‘五’,columns=‘col1’) ?inplace=False在原DataFrame中改动 默认false?
    df[‘col1’]=[1,2,3,4,5] del df[‘col1’]
    df[‘col1’]=[1,2,3,4,5] df.pop(‘col1’) 返回被删除的列

  5. 增加:
    df1[‘B’]=list(‘abc’)
    df1.assign(C=pd.Series(list(‘def’)))assign方法不会对原DataFrame做修改(注意:list默认索引从0开始)

  6. 根据类型选择列:
    df.select_dtypes(include=[‘number/float/int等’]).head()

  7. 将Series转换为DataFrame:
    s.to_frame()
    s.to_frame().T 转置

常用基本函数

  1. df.head(n)显示前n行 同理:df.tail(n)后n行
  2. unique和nunique:
    nunique显示有多少个唯一值:df[‘Physics’].nunique()
    unique显示所有的唯一值
  3. count和value_counts
    count返回非缺失值元素个数:df[‘Physics’].count()
    value_counts返回每个元素有多少个
  4. describe和info
    info函数返回有哪些列、有多少非缺失值、每列的类型:df.info()
    describe默认(df[‘Physics’].describe()可以描述非数值型数据)统计数值型数据的各个统计量(mean std max min …)可自行选择分位数:df.describe(percentiles=[.05, .25, .75, .95])
  5. idxmax和nlargest
    idxmax函数返回最大值索引 df[‘Math’].idxmax()
    nlargest函数返回前n个大的元素值 df[‘Math’].nlargest(n)
  6. clip和replace替换函数
    clip是对超过或者低于某些值的数进行截断(超过的改为上限值,低于的改成下限值)
    replace对某些值进行替换:street_1变成one,street_2变为two
    df[‘Address’].replace([‘street_1’,‘street_2’],[‘one’,‘two’])
    df.replace({‘Address’:{‘street_1’:‘one’,‘street_2’:‘two’}})
  7. apply函数
    df[‘Math’].apply(lambda x:str(x)+’!’) 迭代Series每一列的值操作
    df.apply(lambda x:x.apply(lambda x:str(x)+’!’))迭代DataFrame每一个列操作第一个lambda函数中的x是School等列索引,后面一个lambda函数中的x看做是其对应所有的元素,用apply方法分别进行了遍历
    不清楚函数传入了什么,可以用lambda x:print(x)看一下
    apply函数理解

排序

  1. 索引排序
    df.set_index(‘Math’).sort_index()
    set_index函数可以设置索引为math列
    sort_index()默认按索引值升序排列,即ascending=True

  2. 值排序
    df.sort_values(by=‘Class’)
    df.sort_values(by=[‘Address’,‘Height’]).head()
    多个值排序,即先对第一层排,在第一层相同的情况下对第二层排序

问题练习总结

图源自阿布
思维导图
【问题一】 Series和DataFrame有哪些常见属性和方法?
Series:属性value,name,index,dtype 方法:mean DataFrame:index,columns,values,shape 方法:del,drop,pop,assign,T

【问题二】 value_counts会统计缺失值吗?
不会

【问题三】 与idxmax和nlargest功能相反的是哪两组函数?
idxmin和nsmallest

【问题四】 在常用函数一节中,由于一些函数的功能比较简单,因此没有列入,现在将它们列在下面,请分别说明它们的用途并尝试使用。
sum求和/mean求均值/median求中位数/mad中位数绝对偏差/min求最小/max最大/abs绝对值/std标准差/var方差/quantile分位数/cummax累计求最大/cumsum累计求和/cumprod累计求积
【问题五】 df.mean(axis=1)是什么意思?它与df.mean()的结果一样吗?第一问提到的函数也有axis参数吗?怎么使用?
df.mean(axis=1)代表按行计算均值,结果不同;有这个参数,axis=1表示按行操作,也就是沿着x轴水平方向操作,axis=0表示按列操作,沿着垂直方向。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值