pandas模块(下)(DataFrame)
-
Series数据操作
-
基本算术方法
-
核心数据结构之DataFrame
-
读取外部数据
-
DataFrame一系列操作

详细
-
Series数据操作
res = pd.Series([111,222,333,444]) # 增加 通过增加新的索引/标签添加新的元素 res['a'] = 123 # 查找 根据索引或者标签定位对应的值 res.loc[1] # 修改 用赋值符号修改Series指定索引或标签对应的值 res[0] = 1 # 删除 根据索引或者标签删除对应的值 del res[0]
-
基本算术方法
数据
fill_value参数:将缺失数据用0填充再参与计算。
sr1 = pd.Series([11,22,33], index=['c','a','d']) sr2 = pd.Series([12,23,34,45], index=['d','c','a','b'])

1、add 加法
sr1.add(sr2)
sr1.add(sr2,fill_value=0)

2、sub 减法
sr1.sub(sr2)
sr1.sub(sr2,fill_value=0)

3、div 除法
sr1.div(sr2)
sr1.div(sr2,fill_value=1)

4、mul 乘法
sr1.mul(sr2)
sr1.mul(sr2,fill_value=1)

-
核心数据结构之DataFrame
Dataframe创建方式
DataFrame是一种表格型数据结构,相当于二维数组,含有一组有序的列,可以看作由多个Series组成的共用同一组索引的字典。
import numpy as np import pandas as pd # 创建方式 1.pd.DataFrame({'one':[1,2,3,4],'two':[4,3,2,1]}) 2.pd.DataFrame({ 'one':pd.Series([1,2,3],index=['a','b','c']), 'two':pd.Series([1,2,3],index=['b','a','c']) }) 3.pd.DataFrame(np.array([[10,20],[30,40]]),index=['a','b'],columns=['c1','c2']) """ 以上创建方式无需全部熟悉,了解一种即可 因为工作中Dataframe的数据一般都是来自于读取外部文件数据,而不是自己手动去创建 """


Dataframe常见属性
1.index 行索引/标签 2.columns 列索引/标签 3.T 转置 4.values 值索引 5.describe 快速统计 # 在DataFrame中所有的字符类型数据在查看数据类型的时候都表示成object

-
读取外部数据
# 读取方式 1.读取文本文件和.csv文件数据 pd.read_csv() 2.读取excel表格文件数据 pd.read_excel() 3.读取MySQL表格数据 pd.read_sql() 4.读取页面上table标签内数据 pd.read_html()
读取文本文件
pd.read_csv(filepath_or_buffer, sep=',', header='infer', names=None, usecols=None, skiprows=None, skipfooter=None, converters=None, encoding=None) # 参数说明 1.filepath_or_buffer:指定文本文件或.csv文件路径 2.sep:指定原数据字段间的分隔符,默认为逗号',' 3.header:是否需要将原数据集中的第一行作为表头,默认将第一行作为表头(如果没有表头需要将该参数设置为None) 4.names:如果原数据集中没有表头,可以通过该参数在数据读取时给表格添加具体的表头 5.usecols:筛选需要读取的字段名 6.skiprows:指定数据读取时需要跳过原数据集开头的行数 ,一般是文字说明,python能自动过滤掉完全无内容的空行 7.skipfooter:指定数据读取时需要跳过原数据集末尾的行数 8.converters:转换数据类型(以字典的形式指定) 9.encoding:如果文件中含有中文,有时需要指定字符编码
读取Excel表格
pd.read_excel(io, sheet_name=0, header=0, skiprows=None, skipfooter=0, index_col=None, names=None,na_values=None, thousands=None, convert_float=True) # 参数说明 1.io:指定Excel表格文件路径 2.sheet_name:指定需要读取Excel表格文件中的第几个Sheet,既可以传递序号也可以传递具体的Sheet名称 3.header:是否需要将文件内容的首行用作表头,默认需要 4.skiprows:指定读取数据时跳过的开始行数 5.skipfooter:指定读取数据时跳过的末尾行数 6.index_col:指定哪些列用作数据框的行索引(标签) 7.na_values:指定原始数据中哪些特殊值代表了缺失值 8.thousands:指定原始数据集中的千分位符 9.convert_float:默认将所有的数值型字段转换为浮点型字段 10.converters:转换某些列的形式(以字典的形式) eg: pd.read_excel(r'data_test02.xlsx',header = None, names = ['ID','Product','Color','Size'], converters = {'ID':str})
读取数据库数据
# 需要pymysql模块 import pymysql conn = pymysql.connect(host,port,user,password, database, charset) # 参数说明 1.host:指定需要访问的MySQL服务器地址 2.port:指定访问MySQL数据库的端口号 3.charset:指定读取MySQL数据库的字符集,如果含有中文,一般设置为 “utf8”或“gbk” 4.user:指定访问MySQL数据库的用户名 5.password:指定访问MySQL数据库的密码 6.database:指定访问MySQL数据库的具体库名 eg: # 直接通过SQL语句读取MySQL数据 pd.read_sql('select * from user', con = conn) # 避免占用资源,需要关闭链接 conn.close()
读取网页表格
# 直接通过链接即可读取其中所有的table标签内数据 pd.read_html(r'https://baike.baidu.com/item/NBA%E6%80%BB%E5%86%A0%E5%86%9B/2173192?fr=aladdin')

-
DataFrame一系列操作
数据概览
df.columns # 查看列 df.index # 查看行 df.shape # 行列 df.dtypes # 数据类型 df.head() # 取头部多条数据,默认五条 df.tail() # 取尾部多条数据,默认五条


行列操作
# 获取该列名对应的数据 df['列字段名'] # 修改列名 df.rename(column={'旧列名':'新列名'}) # 创建新的列 df['新列名']=df.列名称/(df.列名称1+df.列名称2) # 自定义位置 df.insert(3,'新列名',新数据) # 添加行 df3 = df1.append(df2)

数据筛选
import pandas as pd # 获取指定列数据 df['列名'] # 单列数据 df[['列名1','列名2',...]] # 多列数据 # 获取指定行数据 df=pd.read_excel(r'D:\pythonProject\day34\例题两道\二手房.xlsx', sheet_name=0,skiprows=None, skipfooter=0, index_col=None, names=None,na_values=None, thousands=None, convert_float=True) df.loc[df["区域名称"] == ' 淞宝 '] df.loc[(df["区域名称"] == ' 淞宝 ') & (df['总价(万元)'] > 200),] df.loc[(df["区域名称"] == ' 淞宝 ') & (df['总价(万元)'] > 200),['name','tot_amt','price_unit']]

sec_car = pd.read_csv(r'sec_cars.csv') sec_car.head() sec_car.dtypes # 更改数据类型 sec_car.Boarding_time = pd.to_datetime(sec_car.Boarding_time, format = '%Y年%m月') sec_car.New_price = sec_car.New_price.str[:-1].astype(float)

浙公网安备 33010602011771号