python数据分析day4
目录
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)

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



所有评论(0)