pandas | 学习笔记

1.可以通过传递一个list对象来创建一个Series,pandas会默认创建整型索引

s = pd.Series([1,3,5,np.nan,6,8])

2.通过传递一个numpy array,时间索引以及列标签来创建一个DataFrame

df = pd.DataFrame(np.random.randn(6,4),index=dates,columns=list('ABCD'))
dates = pd.date_range('20130101',periods=6)

3.通过传递一个能够被转换成类似序列结构的字典对象来创建一个DataFrame

df = pd.DataFrame({'A':1,
                   'B':pd.Timestamp('20130201'),
                   'C':pd.Series(1,index=list(range(4),dtype='float21'),
                   'D':np.array([3]*4,dtype='int32'),
                   'E':pd.Categorical(["test","train","test","train"]),
                   'F':'foo'})

4.查看不同列的数据类型

df.dtypes

1.查看DataFrame中头部和尾部的行

df.head()
df.tail(3)

2.显示索引,列和底层的numpy数据

df.index
df.columns
df.values

3.describe()函数对于数据的快速统计汇总

df.describe()

4.对数据的转置

df.T

5.按轴进行排序

df.sort_index(axis=1,ascending=False)

6.按值进行排序

df.sort_values(by='B')

1.选择一个单独的列,这将会返回一个Series,等同于df.A

df['A']

2.通过[ ]进行选择,这将会对行进行行切片

df[0:3]

通过标签选择

1.使用标签来获取一个交叉的区域

df.loc[date[0]]

2.通过标签来在多个轴上进行选择

df.loc[:,['A','B']]

3.标签切片

df.loc['20130102':'20130104',['A','B']]

4.对于返回的对象进行维度缩减

df.loc['20130102',['A','B']]

5.获取一个标量

df.loc[dates[0],'A']

6.快速访问一个标量(与上一个方法等价)

df.loc[date[0],'A']

通过位置选择

1.通过传递数值进行位置选择(选择的是行)

df.iloc[3]

2.通过数值进行切片

df.iloc[3:5,0:2]

3.通过指定一个位置的列表

df.iloc[[1,2,4],[0,2]]

4.对行进行切片

df.iloc[1:3,:]

5.对列进行切片

df.iloc[:,1:3]

6.获取特定的值

df.iloc[1,1]
#快速访问标量
df.iat[1,1]

布尔索引

1.使用一个单独列的值来选择数据

df[df.A > 0]

2.使用where操作来选择数据

df[df > 0]

3.使用isin()方法来过滤

df2 = df.copy()
df2['E'] = ['one','one','two','three','four','three']
df2[df2['E'].isin(['two','four'])]

1.reindex()方法可以对特定轴上的索引进行改变/增加/删除操作,这将返回原始数据的一个拷贝

df1 = df.reindex(index=dates[0:4],columns=list(df.columns)+['E'])
df1.loc[dates[0]:date[1],'E'] = 1

2.去掉包含缺失值的行

df1.dropna(how='any')

3.对缺失值进行填充

df1.fillna(value=5)

4.对数据进行布尔填充

pd.isnull(df1)

1.执行描述性统计

df.mean()

2.在其它轴上进行相同的操作

df.mean(1)

3.对于拥有不同维度,需要对齐的对象进行操作,pandas会自动沿着指定的维度进行广播

s = pd.Series([1,3,5,np.nan,6,8],index=dates).shift(2)
df.sub(s,axis='index')

apply

df.apply(np.cumsum)
df.apply(lambda x:x.max() - x.min())

concat

pieces = [df[:3],df[3:7],df[7:]]
pd.concat(pieces)

merge

pd.merge(left,right,on='key')

append

df.append(s,ignore_index=True)

1.分组并对每个分组执行sum函数

df.groupby('A').sum()

2.通过多个列进行分组形成一个层次索引,然后执行函数

df.groupby(['A','B']).sum()

Original: https://blog.csdn.net/happylls666/article/details/128245819
Author: 奔跑的蜗牛君666
Title: pandas | 学习笔记

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

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

(0)

大家都在看

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