目录

pandas

1.pandas的基础概念

2.pandas和numpy的区别

3.pandas的数据结构

4.series相关操作

5.DataFrame

6.pandas读取外部数据

7.pandas关于nan的处理


pandas

1.pandas的基础概念

        pandas,python+data+analysis的组合缩写,是python中基于numpy和matplotlib的第三方数据分析库,与后两者共同构成了python数据分析的基础工具包。

2.pandas和numpy的区别

从数据结构看:

        numpy的核心数据结构是ndarray,支持任意维数的数组,但要求单个数组内所有数据是同质的,即类型必须相同;而pandas的核心数据结构是series和dataframe,仅支持一维和二维数据,但数据内部可以是异构数据,仅要求同列数据类型一致即可。

        numpy的数据结构仅支持数字索引,而pandas数据结构则同时支持数字索引和标签索引。

从应用方面看:

        numpy主要是用于数值计算,其内部集成了大量矩阵计算模块,例如基本的矩阵运算、线性代数、fft、生成随机数等,支持灵活的广播机制。

        pandas主要用于数据处理与分析,支持包括数据读写、数值计算、数据处理、数据分析和数据可视化全套流程操作。

3.pandas的数据结构

        pandas 中主要有两种数据结构 series 和 DataFrame。

        Series:一种一维的数组型对象,它包含了一个值序列,并且包含了数据标签,称为索引(index),可以看做是类字典结构:标签是key,取值是value。最简单的序列可以仅仅由一个数组组成。ps:Series 中的索引值是可以重复的。

        DataFrame:一种表格型数据结构,它含有一组有序的列,每列可以是不同的值。DataFrame既有行索引,也有列索引,它可以看作是由Series组成的字典,不过这些Series公用一个索引。在 DataFrame 中,数据被存储为一个以上的二维块,而不是列表、字典或其他 一维数组的集合。

        由于pandas允许数据类型是异构的,各列之间可能含有多种不同的数据类型,所以dtype取其复数形式dtypes。与此同时,series因为只有一列,所以数据类型自然也就只有一种,pandas为了兼容二者,series的数据类型属性既可以用dtype也可以用dtypes获取;而dataframe则只能用dtypes。

4.series相关操作

        创建series

t1=pd.Series([1,2,3,4,5,6,7])
print(t1)

        索引在左边,值在右边。由于我们不为数据指定索引,默认生成的索引是从 0 到 N-1(N是数据的长度)。 

        在创建series时,可以指定索引。

t1=pd.Series([1,2,3,4,5,6,7],index=list("abcdefg"))
print(t1)

        通过字典来创建series

temp_dict={"name":"bob","age":11,"phone":12345}
t1=pd.Series(temp_dict)
print(t1)

        修改dtype

t1 = pd.Series(range(5))
print(t1)

t1=t1.astype(float)

5.DataFrame

        创建dataframe

t1=pd.DataFrame(np.arange(12).reshape(3,4))
print(t1)

在DataFrame的处理中经常会遇到轴的概念,axis=0即表示沿着每一列或行标签\索引值向下执行方法,axis=1即表示沿着每一行或者列标签模向执行对应的方法。

         指定行索引和列索引

        

t1=pd.DataFrame(np.arange(12).reshape(3,4),index=list('abc'),columns=list('QWER'))

        利用字典创建dataframe 

temp_dict = {
    'name':['alice','Oho','bob','john','ssww'],
    'year':[2000,2001,2002,2001,2002],
    'month':[1,7,3,4,9]
}
t1 = pd.DataFrame(temp_dict)

        dataframe的属性和方法

 

         dataframe的索引,dataframe有loc和iloc两种获取索引的方式。

6.pandas读取外部数据

        pandas提供了很多读取外部文件的方法:


7.pandas关于nan的处理

        查看是否是nan, isnull() 和 notnull()

df2 = pd.DataFrame([[1, 2, 3, np.nan], [2, np.nan, 5, 6], [np.nan, 7, np.nan, 9], [1, np.nan, np.nan, np.nan]])
print(df2)
print(df2.isnull())
print(df2.notnull())

         利用drop.na可以删除带有nan的数据,指定how的参数:any 只要有 nan 就会删掉。 all 全部是nan,才会删除。

df2 = pd.DataFrame([[1, 2, 3, np.nan], [2, np.nan, 5, 6], [np.nan, 7, np.nan, 9], [1, np.nan, np.nan, np.nan]])
df3 = df2.dropna(axis=0, how='all')
print(df3)
df4=df2.dropna(axis=0,how='any')
print(df4)

         利用fillna可以对nan进行填充

df3 = df2.fillna(df2.mean())#利用均值填充
print(df3)
df2[0]=df2[0].fillna(df2[0].mean())#指定填充列
print(df2)

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐