新手怎么做电商在哪个网站软件设计师考什么
文章目录
- 一. Pandas DataFrame简介
 - 二. 加载数据集
 - 1. 目的
 - 2. 步骤
 - ① 导包
 - ② 加载csv
 - ③ 查看数据类型及属性
 - ④ Pandas与Python常用数据类型对照
 
- 三. 查看部分数据
 - 1. 根据列名加载部分列数据
 - ① 加载一列数据,通过df['列名']方式获取
 - ② 加载多列数据,通过df[['列名1','列名2',...]]
 
- 2. 按行加载部分数据
 - ① head()
 - ③ tail()
 - ② loc:通过行索引获取指定行数据
 - ④ loc:通过索引标签获取指定多行数据
 - ⑤ iloc:通过行号获取行数据
 
- 3. 获取指定行/列数据
 - ① loc和iloc属性既可以用于获取列数据,也可以用于获取行数据
 - ② 使用 loc 获取数据中的1列/几列
 - ③ 使用 iloc 获取数据中的1列/几列
 - ④ 如果loc 和 iloc 传入的参数弄混了,会报错
 - ⑤ 通过range 生成序号,结合iloc 获取连续多列数据
 - ⑥ 在 iloc中使用切片语法获取几列数据
 - ⑦ 使用 loc/iloc 获取指定行,指定列的数据
 - ⑧ 获取多行多列
 
- 四. 分组和聚合计算
 - 1. 分组和聚合介绍
 - 2. 分组方式
 - 3. 分组频数计算
 
- 五. 基本绘图
 
一. Pandas DataFrame简介
- Pandas是用于数据分析的开源Python库,可以实现数据加载,清洗,转换,统计处理,可视化等功能
 - DataFrame和Series是Pandas最基本的两种数据结构
 - DataFrame用来处理结构化数据(SQL数据表,Excel表格)
 - Series用来处理单列数据,也可以把DataFrame看作由Series对象组成的字典或集合
 
二. 加载数据集
1. 目的
- 做数据分析首先要加载数据,并查看其结构和内容,对数据有初步的了解
 - 查看行,列数据分布情况
 - 查看每一列中存储信息的类型
 
2. 步骤
① 导包

② 加载csv
df = pd.read_csv('data/scientists.csv')
df.head()
 

csv文件:Comma-Separated Values
 也可以通过指定分隔符加载tsv文件
df = pd.read_csv('data/scientists.tsv', sep='\t')
df.head()
 
tsv文件 Tab-Separated Values
③ 查看数据类型及属性
-  
查看df类型
type(df)pandas.core.frame.DataFrame -  
查看df的shape属性,可以获取DataFrame的行数,列数
df.shape(8, 5) -  
查看df的columns属性,获取DataFrame中的列名
df.columnsIndex(['Name', 'Born', 'Died', 'Age', 'Occupation'], dtype='object')df.indexIndex(['Name', 'Born', 'Died', 'Age', 'Occupation'], dtype='object') -  
查看df的dtypes属性,获取每一列的数据类型
df.dtypesName objectBorn objectDied objectAge int64Occupation objectdtype: objectdf.info()
df.info()
df.describe()
 
④ Pandas与Python常用数据类型对照

三. 查看部分数据
1. 根据列名加载部分列数据
① 加载一列数据,通过df[‘列名’]方式获取
df = pd.read_csv('data/nobel_prizes.csv')    
df
 

country_df = df['category']
country_df
 

② 加载多列数据,通过df[[‘列名1’,‘列名2’,…]]
注意这里是两层[] 可以理解为 df[列名的list]
subset = df[['category','year']]
subset
 

2. 按行加载部分数据
① head()
df.head()
 

③ tail()
df.tail(n=1)
 

② loc:通过行索引获取指定行数据
行索引介绍
先打印前5行数据 观察第一列
print(df.head())
最左边一列是行号,也就是DataFrame的行索引
Pandas默认使用行号作为行索引
loc属性传入行索引,来获取DataFrame的部分数据(一行,或多行)
④ loc:通过索引标签获取指定多行数据
df.loc[0]
df.loc[99]
last_row_index = df.index[-1]
df.loc[last_row_index]
 

⑤ iloc:通过行号获取行数据
在当前案例中,使用iloc 和 loc效果是一样的
需要注意的是,iloc传入的是索引的序号,loc是索引的标签
使用iloc时可以传入-1来获取最后一行数据,使用loc的时候不行
df.iloc[-1]
 

3. 获取指定行/列数据
① loc和iloc属性既可以用于获取列数据,也可以用于获取行数据
df.loc[[行],[列]]
 df.iloc[[行],[列]]
df = pd.read_csv('data/scientists.csv')
df
 

df.loc[[0],['Name']]
 

df.iloc[[0],[0]]
 

② 使用 loc 获取数据中的1列/几列
df.loc[[所有行],[列名]]
 取出所有行,可以使用切片语法 df.loc[ : , [列名]]
df.loc[:,['Name']]
 

df.loc[:,['Name','Age']]
 

③ 使用 iloc 获取数据中的1列/几列
df.iloc[:,[列序号]] # 列序号可以使用-1代表最后一列
df.iloc[:,[1,3,-1]]
 

④ 如果loc 和 iloc 传入的参数弄混了,会报错
loc 只能接受行/列 的名字,
 iloc只能接受行/列的序号
 
 
⑤ 通过range 生成序号,结合iloc 获取连续多列数据
tmp_range = list(range(4))
print(tmp_range)
df.iloc[:, tmp_range]
 

tmp_range = list(range(1,3))
print(tmp_range)
df.iloc[:, tmp_range]
 

⑥ 在 iloc中使用切片语法获取几列数据
顾头不顾尾
df.iloc[:,2:4]
 

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

⑦ 使用 loc/iloc 获取指定行,指定列的数据
df.loc[0,'Name']
df.iloc[0,0]
 
'Rosaline Franklin'
 
⑧ 获取多行多列
df.loc[2:6,['Name','Age']]
 

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

四. 分组和聚合计算
1. 分组和聚合介绍
- 在我们使用Excel或者SQL进行数据处理时,Excel和SQL都提供了基本的统计计算功能
 - 当我们再次查看gapminder数据的时候,可以根据数据提出几个问题 
- 每一年的平均预期寿命是多少?每一年的平均人口和平均GDP是多少?
 - 如果我们按照大洲来计算,每年个大洲的平均预期寿命,平均人口,平均GDP情况又如何?
 - 在数据中,每个大洲列出了多少个国家和地区?
 
 
2. 分组方式
- 对于上面提出的问题,需要进行分组-聚合计算 
- 先将数据分组(每一年的平均预期寿命问题 按照年份将相同年份的数据分成一组)
 - 对每组的数据再去进行统计计算如,求平均,求每组数据条目数(频数)等
 - 再将每一组计算的结果合并起来
 
 - 可以使用DataFrame的groupby方法完成分组/聚合计算
 
df.groupby('year')['lifeExp'].mean()
 

- 将前面一行代码拆开,逐步分析 
- 通过df.groupby(‘year’)先创一个分组对象
 - 从分组之后的数据DataFrameGroupBy中,传入列名进行进一步计算
 - 返回结果为一个 SeriesGroupBy ,其内容是分组后的数据
 - 对分组后的数据计算平均值
 
 
如果想对多列值进行分组聚合代码也类似
df.groupby(['year','continent'])['lifeExp','gdpPercap'].mean()
 

3. 分组频数计算
- 在数据分析中,一个常见的任务是计算频数 
- 可以使用 nunique 方法 计算Pandas Series的唯一值计数
 - 可以使用 value_counts 方法来获取Pandas Series 的频数统计
 - 在数据中,每个大洲列出了多少个国家和地区?
 
 
df.groupby('continent')['country'].nunique()
 

df.groupby('continent')['country'].unique()
 

df['country'].value_counts()
 

五. 基本绘图
视化在数据分析的每个步骤中都非常重要
 在理解或清理数据时,可视化有助于识别数据中的趋势
df.groupby('year')['lifeExp'].mean().plot()
 

