dataframe数据结构

目录

  • Series数据操作
  • 算术运算符
  • DataFrame创建方式
  • 常见属性
  • DataFrame数据类型补充
  • 读取外部数据
  • 文本文件读取
  • excel表格读取
  • 数据库数据读取
  • 网页表格数据读取
  • 数据概览
  • 行列操作
  • 数据筛选
  • 数据处理

 

Series数据操作

res = pd.Series([111,222,333,444,555])
# 增
res['aaa'] = 999
# 查
res.loc['aaa']
# 改
res[0] = 123
# 删
del res[2]

dataframe数据结构

 

算术运算符

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)


add        加(add)
sub        减(subtract)
div        除(divide)
mul        乘(multiply)

dataframe数据结构

 

 

DataFrame创建方式

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

第一种:
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'])

dataframe数据结构

 

 更多(了解)

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})

 

常见属性

1.index    行索引
2.columns  列索引
3.T           转置
4.values   值索引
5.describe 快速统计

dataframe数据结构

 

DataFrame数据类型补充

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

dataframe数据结构

 

 

读取外部数据

pd.read_csv()    # 可以读取文本文件和.csv结尾的文件数据
pd.read_excel()   # 可以读取excel表格文件数据
pd.read_sql()     # 可以读取MySQL表格数据
pd.read_html()    # 可以读取页面上table标签内所有的数据

 

文本文件读取

重要参数

1.filepath_or_buffer:指定txt文件或csv文件所在的具体路径 

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

dataframe数据结构

 

3.header:是否需要将原数据集中的第一行作为表头,默认将第一行用作字段名称,如果原始数据没有表头需要将该参数设置为None 

4.names:如果原数据集中没有字段,可以通过该参数在数据读取时给数据框添加具体的表头

dataframe数据结构

 

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

dataframe数据结构

 

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

7.skipfooter:数据读取时,指定需要跳过原数据集末尾的行数 

dataframe数据结构

 

8.converters:用于数据类型的转换(以字典的形式指定) 
9.encoding:如果文件中含有中文,有时需要指定字符编码

dataframe数据结构

基本使用

import pandas as pd
data01 = pd.read_csv(r'data_test01.txt',
           skiprows = 2,  # python能自动过滤掉完全无内容的空行
           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']
           )

查看方法帮助

方式1:
    方法名?
方式2:
    光标停留在方法名左括号后面
    先按住shift键不松开,再按tab键

 

excel表格读取

重要参数

1.io:指定电子表格的具体路径 
2.sheet—name:指定需要读取电子表格中的第几个Sheet,既可以传递整数也可以传递具体的Sheet名称 
3.header:是否需要将数据集的第一行用作表头,默认为是需要的 
4.skiprows:读取数据时,指定跳过的开始行数
5.skip_footer:读取数据时,指定跳过的末尾行数 
6.index_col:指定哪些列用作数据框的行索引(标签)
7.na_values:指定原始数据中哪些特殊值代表了缺失值 
8.thousands:指定原始数据集中的千分位符 
9.convert_float:默认将所有的数值型字段转换为浮点型字段 
10.converters:通过字典的形式,指定某些列需要转换的形式

基本使用

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

dataframe数据结构

 

数据库数据读取

# 在anaconda环境下直接安装pymysql模块
import pymysql
conn = pymysql.connect(host,port,user,password, database, charset)

dataframe数据结构

 

 

 重要属性

1.host:指定需要访问的MySQL服务器
2.port:指定访问MySQL数据库的端口号 charset:指定读取MySQL数据库的字符集,如果数据库表中含有中文,一般可以尝试将该参数设置为 “utf8”或“gbk”
3.user:指定访问MySQL数据库的用户名
4.password:指定访问MySQL数据库的密码
5.database:指定访问MySQL数据库的具体库名

基本使用

dataframe数据结构

 

 

 网页表格数据读取

pd.read_html(r'https://baike.baidu.com/item/NBA%E6%80%BB%E5%86%A0%E5%86%9B/2173192?fr=aladdin')

dataframe数据结构

 

 

数据概览

columns     # 查看列 
index       # 查看行
shape       # 行列 
dtypes      # 数据类型 

dataframe数据结构

head()      # 取头部多条数据
dtail()      # 取尾部多条数据

dataframe数据结构

 

行列操作

df['列字段名词']  # 获取指定列对应的数据

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

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

# 自定义位置
df.insert(3,'新列名称',新数据)

# 添加行
df3 = df1.append(df2)

dataframe数据结构

 dataframe数据结构

 

 数据筛选

# 获取指定列数据
df['列名']  # 单列数据
df[['列名1','列名2',...]]  # 多列数据


# 获取指定行数据
eg:
res4.loc[res4['区域名称']=='川沙']
res4.loc[(res4['区域名称']=='川沙') & ([res4['总价']>300]),['','']]

 dataframe数据结构

 

 

 数据处理

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月')

 

 dataframe数据结构

sec_car.New_price = sec_car.New_price.str[:-1].astype(float)

eg:
浦东二手房的总价数据(如图)

dataframe数据结构

 

上一篇:pandas dataframe 与 spark dataframe 互相转换(数据类型应该怎么转换呢?)


下一篇:DataFrame.select_dtypes