怎么自己做画册网站,星沙网站建设公司,青岛做网站哪家强,网站建设分为目录
注#xff1a;简单起见#xff0c;下文中df均写为表名#xff0c;函数均写为HS#xff0c;属性均写为SX#xff0c;范围均写为FW。
1.数据分析常用开源库
注释…目录
注简单起见下文中df均写为表名函数均写为HS属性均写为SX范围均写为FW。
1.数据分析常用开源库
注释
2.Pandas 数据结构
Series的创建
Series属性
3.DataFrame创建
4.文件加载
5.HS与SX
6.HS-初始化表格
7.HS-获取最值索引
8.SX-显示行列
9.HS/SX-索引
10.HS-计数
11.HS-最值中位数平均值标准差求和
12.HS-排序
13.HS-去重
14.应用
15.数据的保存和读取
16.HS-query查询
17.HS-isin
18.DF增列
19.DF删除
20.DF修改
21.Series/apply自定义函数
22.DataF/apply自定义函数
23.pandas/Mysql 注简单起见下文中df均写为表名函数均写为HS属性均写为SX范围均写为FW。
1.数据分析常用开源库 Pandas 基于Numpy,特点高效的科学计算库,核心的数据对象是ndarray(n维数组) Series 一列数据 DataFrame 二维表 绘图的库最基础的 Matplotlib Pandas 有绘图的API,基于Matplotlib Seaborn 基于Matplotlib 注释 简单起见下文中df均写为表名函数均写为HS属性均写为SX范围均写为FW 2.Pandas 数据结构 Series的创建 pd.Series() S大写 传入一个、两个参数 第一个参数就是数据 也可以通过index 指定行索引 如果不指定行索引 会默认添加从0开始的索引 传入的数据可以是以下类型 numpy的ndarray python 列表,元组,字典 传入的如果是字典,字典的key作为索引,Value就是数据 一列Series数据类型必须一致的 如果既有字符串,又有数字,会默认是字符串类型 Object Series属性 s.shape # 形状 描述Series有几行 返回一个元组
s.values # Series的值 默认ndarray类型
s.index # Series的索引 如果手动指定 就是一个ndarray类型 如果是自动生成 rangeIndex() 3.DataFrame创建
# 定义一个字典
dict_data {id:[1,2,3],name:[张三,李四,王五],age:[18,20,22]
}
# 储存在df中
df pd.DataFrame(dict_data)
df
4.文件加载 # 不创建也可以加载文件
df pd.read_csv(D:/Yuanman/day01/02_代码/data/scientists.csv)
df pd.read_csv(D:/Yuanman/day01/02_代码/data/scientists.csv,encodinggbk)
df 5.HS与SX
红色mHS用()
紫色pSX乄||[] 6.HS-初始化表格 加载数据之后做具体的业务处理之前一般固定的套路 head() info() describe() 从脑袋上取前5条也可指定条数 表名.head() 从尾巴上取后5条也可指定条数 表名.tail() 字段有哪些有没有空值 表名.info() 看数据的分布情况 表名.describe() 查看所有数据分布情况 表名.describe(includeall) 查看有几个唯一值 表名.unique() 7.HS-获取最值索引
# 返回最大值的下标
表名[列名].argmax()
# 返回最小值的下标
表名[列名].argmin()
# 返回最大值的索引值
表名[列名].idxmax()
# 返回最小值的索引值
表名[列名].idxmin()
8.SX-显示行列
# 显示几行几列
表名.shape
# 仅显示行
表名.shape[0]
# 仅显示列
表名.shape[1]
# 显示所有值
表名.values
9.HS/SX-索引
# 行索引FW及步长
表名.index
# 显示列索引及类型
表名.columns
# 把某一列数据作为索引,加inplaceTrue替换原索引
表名.set_index(列名,inplaceTrue)
# 重置所有为从0开始的整数
表名.reset_index()
# 将其行索引修改为对应的列值
表名.index df2[列名]
# 将其列索引(字段)修改为对应值
表名.columns [列1,列2]
# 单独修改某行某列的索引,注意rename和replace类似如果旧值没有找到不会报错
表名.rename(index{0:行索引名},columns{旧列名:新列名})
10.HS-计数
# 计算所有列的数据数也可以单独计算某列
表名.count()
# 分组计数查看每个分组的数量并降序也可以单独计算某列
表名.value_counts(ascendingFalse)
11.HS-最值中位数平均值标准差求和
# 计算所有列的最大值也可以单独计算某列
表名.max()
# 计算所有列的最小值也可以单独计算某列
表名.min()
# 计算所有列的平均值也可以单独计算某列
表名.mean()
# 计算所有列的中位数也可以单独计算某列
表名.median()
# 标准差(方差开根号反映了数据的离散程度也可以单独计算某列)
s1.std()
# 对文件某一列或某多列进行求和0是对列求和默认是0
表名[字段].sum()
# 1是对行求和此时列字段至少两个
表名[[字段1,字段2]].sum()
12.HS-排序
# 按照某列排序True升/False降不指定显示列则为全部
表名[显示列名].sort_values(by筛选字段名,ascendingFalse)
# 根据某字段排序后显示其他字段
名称 表名[[字段1,字段2]].sort_values(by字段2,ascendingFalse)
13.HS-去重
# 去重假删
表名.drop_duplicates()
# 去重真删(False假True真)
表名.drop_duplicates(inplaceTrue) subset 传入列名的列表用来做重复判断的条件 keep 默认是first 满足重复条件的数据保留第一次出现的还可以选last 保留最后一次出现的 ignore_index 默认是False 去重后会保留原来的索引改成True之后会重新给从0开始的索引 inplace 替换 表名.drop_duplicates(subset[字段1,字段2])
表名.drop_duplicates(subset[字段1,字段2],keeplast,inplaceTrue)
表名.drop_duplicates(subset[字段1,字段2],keeplast,ignore_indexTrue)
14.应用 # select *
表名[直接就条件]
# 获取数据的一列或多列
表名[列名]
表名[[列1列2]] # 通过下标切片方式获取部分行[初始索引:终止索引:步长]不包括终止索引(左闭右开)
表名[a:b:c] # 相当于sql中的where筛选多个条件需要用()括起来位运算连接(and:,or:|)
表名[显示列][表名[列名]数值] # 根据条件增新列
表名[新列名]表名[数据列1]-表名[数据列2] # 拿出行数据用列展示[]内是行列名不是编号
表名.loc[0]
# 所有行加一列
表名.loc[:,列名]
# 0到3(左闭右闭)
表名.loc[:3]
# 列名也可以加:指定列FW
表名.loc[:3,:列名]
表名.loc[:3,[列1,列2]]
# 逗号前也可以作条件筛选
表名.loc[df[区域]望京租房,:价格] # 输出指定索引值的数据[]内是编号不是行列名其他同上
新表名 带索引的表.iloc[0][输出列名] 15.数据的保存和读取
# 创建数据文件
import pandas as pd
data [
[1,张三,1999-3-10,18],
[2,李四,2002-3-10,15],
[3,王五,1990-3-10,33],
[4,隔璇老王,1983-3-10,40]
]
df pd.DataFrame(data,columns[id,name,birthday,age])
# 将数据存储为表格文件
df.to_excel(test2.xlsx,sheet_namestudent,indexFalse)
# 读取该文件
pd.read_excel(test2.xlsx,sheet_namestudent)
# 将数据存储为csv文件
df.to_csv(test2.csv,indexFalse)
# 指定分隔符
df.to_csv(test3.csv,indexFalse,sep\t)
# 读取该文件
pd.read_csv(test2.csv)
16.HS-query查询
# 引号外单内双
表名.query(区域望京租房).head()
表名.query(区域 in [望京租房,回龙观租房])[单独取该列]
# 层层递进
新表名 表名.query(区域 in [望京租房,回龙观租房])
新新表名 新表名.query(朝向 in [“东”,南”])[单独取该列]
# 层层递进合成(类似于子查询)
表名.query(区域 in [望京租房,回龙观租房]).query(朝向 in [东,南])[单独取该列]
# 上式也能这么写
表名.query(区域 in [望京租房,回龙观租房] and 朝向 in [东,南])[单独取该列]
17.HS-isin
# 筛选是否为指定数据输出True和False
表名[区域].isin([望京租房,回尨观租房])
# 再传给df输出所有字段
表名[表名[区域].isin([望京租房,回尨观租房])]
# 多条件筛选(或|)
表名[(表名[区域].isin([望京租房,回尨观租房])) (表名[朝向].isin([西南 东北南 北]))]
18.DF增列
# 添加新列只能在最后一列
表名[新列名][,,...]
# insert新增列可指定位置
表名.insert(列索引,column字段名,value字段内容)
# 在某列后插入一列
所有列名 表.columns.tolist() # 首先获取现有列名
某列的索引 所有列名.index(某列) # 找到budget列的索引位置
所有列名.insert(某列的索引 1, 新列名) # 在budget列之后插入利润列更新所有列名
表名 表名[columns] # 重置列顺序来更新表
19.DF删除
# 通过 df.drop(labelsaxisinplace)方法删除行列数据
# labels: 行索引值或列名
# axis: 删除行-0或index,删除列-1或columns,默认0
# inplace: True或False,是否在原数据上删除,默认 False
表名.drop(0)
表名.drop(列名,axis1,inplaceTrue)
20.DF修改
# 直接改
表名.loc[0,列名] 数据
# 改多个
表名[列名][数据1,数据2,数据3,数据4,数据5]
# 修改指定数
表名.replace(to_replace旧值,value新值)
# 将某列更改后替换旧列并select* (将新列赋值给原列)
名称 表名[列名].mean()
表名[列名]表名[列名].fillna(名称)
21.Series/apply自定义函数
def func(x):print(x)if x天通苑租房:return 昌平区else:return x
# 遍历区域这一列每遍历一条数据就会调用一次func把每个值传递给func函数,func函数的返回值作为apply的结果 返回的还是Series
s df[区域].apply(func)
# apply 可以传递出了series值其它参数但是传参必须从第二个参数开始
df_head3 df.head().copy()
def func(x,arg1,arg2):print(x)if x天通苑租房:return arg1else:return arg2
df_head3[区域].apply(func,args[昌平区,其它区])
22.DataF/apply自定义函数 df.apply(funcaxis默认值0) 默认会传入每一列的series对象如果数据有5列func就会被调用5次每次传入一列series对象 axis1会传入每一行的Series对象如果数据有10行func就会被调用10次每次传入一行的series对象 # 返回每一行它的价格/它的面积但用列展示
def func1(x):return x[价格]/x[面积]
df_head3 df.head().copy()
df_head3.apply(func1,axis1) df.apply() 传入自定义函数的时候函数也可以接受额外的参数,传参args一定是列表 # 返回每一行如果区域为‘天通···’则给价格加个数但用列展示
def func2(x,arg1):# print(x)# print() 分隔一下if x[区域]天通苑租房:x[价格]x[价格]arg1return x
df_head3.apply(func2,axis1,args[2000])
23.pandas/Mysql (1)导包创建连接 from sqlalchemy import create_engine
engine create_engine(mysqlpymysql://root:rootlocalhost:3306/tabledata?charsetutf8)
# mysqlpymysql://用户名:密码mysql服务IP地址:3306/数据库名字?charsetutf8 (2)写入数据到Mysql student.to_sql(student, conengine, if_existsappend, indexFalse) (3)从Mysql读取数据 pd.read_sql(sqlstudent, conengine.connect(),columns[id,name,age])