Series数据操作
res = pd.Series([111,222,333,444])

res['a'] = 123

 pandas模块2_数据

 

 

res.loc[1]

 pandas模块2_mysql_02

 

 

res[0] = 1

 pandas模块2_数据集_03

 

 

del res[0]

 pandas模块2_数据集_04

 

 

算数运算符

add    加(add)

sub    减(substract)

div     除(divide)

mul    乘(multipe)

sr1 = pd.Series([12,23,34], index=['c','a','d'])
sr3 = pd.Series([11,20,10,14], index=['d','c','a','b'])
sr1.add(sr3,fill_value=0)

 pandas模块2_mysql_05

 

 

DataFrame创建方式

表格型数据结构,相当于一个二维数组,含有一组有序的列也可以看做是右Series组成的共用一个索引的字典

pd.DataFrame({'username':['jason'],'pwd':[123]})

 

第一种

res = pd.DataFrame({'one':[1,2,3,4],'two':[4,3,2,1]})

第二种

pd.DataFrame({'one':pd.Series([1,2,3],index=['a','b','c']),
'two':pd.Series([1,2,3],index=['b','a','c'])})

第三种

pd.DataFrame(np.array([[10,20],[30,40]]),index=['a','b'],columns=['c1','c2'])

更多方法

pd.DataFrame([np.arange(1,8),np.arange(11,18)])
s1 = pd.Series(np.arange(1,9,2))
s2 = pd.Series(np.arange(2,10,2))
s3 = pd.Series(np.arange(5,7),index=[1,2])
df5 = pd.DataFrame({'c1':s1,'c2':s2,'c3':s3})

上述的创建方式仅仅是做一个了解就可以

在工作中DataFrame的数据一般都是来源于读取外部的文件数据

而不是自己去手动创建

 

常见属性

1.index     行索引

2.columns     列索引

3.T           转置

4.values        值索引

5.describle    快速统计

pandas模块2_字段_06

 

 

DataFrame数据类型补充

在DataFrame中所有的字符类型数据在查看数据类型的时候都表示成object

pandas模块2_数据读取_07

 

 

 

 

读取外部数据
pd.read_csv() 

可以读取文本文件和.csv结尾的文件数据

pd.read_excel()  

可以读取excel表格文件数据

pd.read_sql()

可以读取MySQL表格数据

pd.read_html() 

可以读取页面上table标签内所有的数据

 

文本文件读取
pd.read_csv(filepath_or_buffer, sep=',',
header='infer', names=None, usecols=None,
skiprows=None, skipfooter=None, converters=None, encoding=None)

filepath_or_buffer:

指定txt文件或csv文件所在的具体路径

sep:指定原数据集中各字段之间的分隔符,默认为逗号”,”

          id        name        income

          1        jason         10

 pandas模块2_数据_08

 

 

header:

是否需要将原数据集中的第一行作为表头,默认将第一行用作字段名称 

如果原始数据没有表头需要将该参数设置为None

 pandas模块2_字段_09

 

 

names:

如果原数据集中没有字段,可以通过该参数在数据读取时给数据框添加需要的表头

 pandas模块2_数据读取_10

 

 

usecols:

指定需要读取原数据集中的哪些变量名

 pandas模块2_数据集_11

 

 

skipprows:

数据读取时,指定需要跳过原数据集开头的行数

有一些表格开头是有几行文字说明的,读取时应该跳过

pandas模块2_数据_12

 

 

pandas模块2_字段_13

 

 

 

skipfooter:

读取数据时,指定需要跳过原数据末尾的行数

 

converters:

用于数据类型的转换(以字典的形式指定)

 

encoding:

如果文件中含有中文,有时需要指定字符编码

 

基本使用
import pandas as pd
data01 = pd.read_csv(r'data_test01.txt',
           skiprows = 2,  # python能自动过滤掉完全无内容的空行(写2、3都行)
           sep = ',',  # 默认就是逗号 写不写都行 
           skipfooter = 3, 
           )
# 1.针对id原本是01、02自动变成了1、2...
converters = {'id':str}
# 2.点击文件另存修改文件编码之后再次读取出现乱码
encoding='utf-8'
# 3.移除收入千分位非逗号的其他符号
thousands = '&'
# 4.手动将文件表头行删除再次读取
header = None  # 默认用索引
names = ['id','year','month','day','gender','occupation','income']
# 5.指定读取的字段
usecols = ['id','income']
pandas模块2_字段_14

 

 pandas模块2_字段_15

 

 

excel表格读取
pd.read_excel(io, sheetname=0, header=0, skiprows=None, 
skip_footer=0, index_col=None, names=None, na_values=None, thousands=None, convert_float=True)

io:指定电子表格的具体路径

sheet—name:指定需要读取电子表格中的第几个Sheet,既可以传递整数也可以传递具体的Sheet名称

header:是否需要将数据集的第一行用作表头,默认为是需要的

skiprows:读取数据时,指定跳过的开始行数

skip_footer:读取数据时,指定跳过的末尾行数

index_col:指定哪些列用作数据框的行索引(标签)

na_values:指定原始数据中哪些特殊值代表了缺失值

thousands:指定原始数据集中的千分位符

convert_float:默认将所有的数值型字段转换为浮点型字段

converters:通过字典的形式,指定某些列需要转换的形式

pd.read_excel(r'data_test02.xlsx',
             header = None,
              names = ['ID','Product','Color','Size'], 
             converters = {'ID':str}
             )

 pandas模块2_数据读取_16

 

 

数据库数据读取

在anaconda环境下直接安装

pymysql模块

import pymysql
conn = pymysql.connect(host,port,user,password, database, charset)

利用pymysql创建好的MySQL的链接之后即可通过该链接操作MySQL

import pymysql
conn = pymysql.connect(host,port,user,password, database, charset)
 pandas模块2_数据集_17

 

 

网页表格数据读取
pd.read_html(r'https://baike.baidu.com/item/NBA%E6%80%BB%E5%86%A0%E5%86%9B/2173192?fr=aladdin')

直接将网页的url输入就会直接拿到里面的table标签的数据

 pandas模块2_字段_18

 

 

数据概览
df.columns  # 查看列 
df.index      # 查看行
df.shape    # 行列 
df.dtypes      # 数据类型 
df.head()      # 取头部多条数据
df.tail()      # 取尾部多条数据

 pandas模块2_mysql_19

 

 pandas模块2_数据_20

 

 

行列操作

获取指定列对应的数据

df['列字段名词']

更改列名称

df.rename(column={'旧列名称':'新列名称'})

创建新的列

df['新列名称']=df.列名称/(df.列名称1+df.列名称2)

自定义位置

df.insert(3,'新列名称',新数据)

添加行

df3 = df1.append(df2)

 

数据筛选

获取指定列数据

df['列名']  # 单列数据
df[['列名1','列名2',...]]  # 多列数据

获取指定行数据

sec_buildings.loc[sec_buildings["region"] == '浦东']

sec_buildings.loc[(sec_buildings["region"] == '浦东') & (sec_buildings['size'] > 150),]

sec_buildings.loc[(sec_buildings["region"] == '浦东') & (sec_buildings['size'] > 150),['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)