pandas day01

发布时间 2024-01-03 17:05:07作者: 秃头不爱学

一、什么是数据分析:

数据分析是指对数据进行收集、处理、转换和挖掘,以发现数据中的规律、趋势和关联性,为决策提供支持和指导的过程。数据分析涵盖了数据预处理数据建模数据可视化数据挖掘等多个方面的技术和方法。

二、pandas的初步使用:

  2.1 安装模块

# 安装第三方库
pip install pandas

# 在读写Excel文件中还需要安装额外pandas依赖库xlrd、xlwt
pip install xlrd
pip install xlwt

  2.2 初步使用

import pandas as pd

theater = pd.read_csv(r'D:\学习资料\数据分析学习\课程3.0补丁【先学2.0再学3.0】\4.2 SQL基础语句运行原理\城市信息.csv')
print(theater)

三、Series对象

  • Pandas库中的一种数据结构,类似于一维数组
  • 由一组数据以及与这组数据有关的标签(索引) 组成
  • Series对象可以存储整数、浮点数、字符串、Python对象等多种数据类型的数据

  3.1 如何创建Series对象   

import pandas as pd

data = ['岳云鹏', '展光华', '中泰上例']
index = [1, 2, 3]
# 创建Series对象,data为数据,index为索引,若传了index则为手动创建索引,若无index传入,则index默认从0开始
s = pd.Series(data=data,index=index)
print(s)
print(type(s))      '<class 'pandas.core.series.Series'>'

  3.2 Series的索引

  • 位置索引

import pandas as pd

data = ['岳云鹏', '展光华', '中泰上例']

s = pd.Series(data=data)
按索引位置取值
print(s[0]) #输出:岳云鹏 print(s[1]) #输出:展光华 print(s[2]) #输出:中泰上例
  • 标签索引

import pandas as pd

index = ['岳云鹏', '展光华', '中泰上例']
data = [88, 89, 90]
s = pd.Series(data=data, index=index)
print(s['岳云鹏'])  # 输出:88
print(s['展光华'])  # 输出:89
print(s['中泰上例'])  # 输出:90
# 可以一次性取出多个
print(s[['岳云鹏', '展光华']])
  • 切片索引

import pandas as pd
# 如果是按照位置索引进行切片,顾头不顾尾
data = ['岳云鹏', '展光华', '中泰上例']
s = pd.Series(data=data)
print(s[0:2])
'''
0    岳云鹏
1    展光华
'''

# 如果按照标签索引进行切片,顾头也顾尾
index = ['岳云鹏', '展光华', '中泰上例']
data = [88, 89, 90]
s = pd.Series(data=data, index=index)
print(s['岳云鹏':'中泰上例'])
'''
岳云鹏     88
展光华     89
中泰上例    90
'''
  • 获取Series的索引和值

import pandas as pd
index=[1,2,3]
data = ['岳云鹏', '展光华', '中泰上例']
s = pd.Series(data=data,index=index)
print(s.index)   #获取索引
print(s.values)  #获取值

四、DataFrame对象

  • DataFrame对象是Pandas库中的一种数据结构,类似于二维表由行和列组成

  • 与Series一样支持多种数据类型

  4.1 创建DataFrame对象

    4.1.1 列表方式创建DataFrame对象

import pandas as pd

data = [['小太阳', 320.9, 100], ['鼠标', 150.3, 50], ['小刀', 1.5, 200]]
columns = ['名称', '价格', '数量']
f = pd.DataFrame(data=data, columns=columns)
print(f)

    4.1.2 字典方式创建DataFrame对象

import pandas as pd

data = {
    '名称': ['小太阳', '鼠标', '小刀'],
    '价格': [320.9, 150.3, 1.5],
    '数量': [100, 50, 200]
}
f = pd.DataFrame(data=data)
print(f)

  4.2 DataFrame对象的重要属性

   4.3 DataFrame对象的重要函数

 五、导入外部数据

  5.1导入.xls或.xlsx文件:pd.read_excel(io,sheet_name,header)

  常用参数说明:

    io:表示.xls或.xlsx文件路径或类文件对象

    sheet_name:表示工作表

    usecols:指定读取的列

    header:默认值为0,取第一行的值为列名,数据为除列名以外的数据,如果数据不包含列名,则设置header=None

import pandas as pd

pd.set_option('display.unicode.east_asian_width', True)  # 使列名对齐
f = pd.read_excel(io=r'D:\学习资料\数据分析学习\课程3.0补丁【先学2.0再学3.0】\3.2-BI工具可视化原理\3.2-8月成交数据.xlsx',usecols=[2, 3])     #指定第2,3列
print(f)

  5.2 导入.csv文件:pd.read_csv(filepath_or_buffer,sep=',',header,encoding=None)

  常用参数说明:

    filepath_or_buffer:字符串,文件路径或url链接

    sep:字符串、分隔符

    header:默认值为0,取第一行的值为列名,数据为除列名以外的数据,如果数据不包含列名,则设置header=None

    encoding:字符串,默认为None,文件的编码格式

  5.3 导入.txt文件:pd.read_csv(filepath_or_buffer,sep='\t',header,encoding=None)

  5.4 导入HTML网页:pd.read_html(io,match,flavor,header,encoding)

  常用参数说明:

    io:字符串、文件路径,了可以是URL链接,网址不接受https

    match:正则表达式

    flavor:解释器默认为lxml

    header:指定列标题所在的行

    encoding:文件的编码格式

import pandas as pd

url = 'http://www.espn.com/nba/salaries'
f=pd.DataFrame()
f =pd.read_html(url)[0]
f.to_csv('nba.csv',index=False)

六、数据抽取

  DataFrame对象的loc属性与iloc属性iloc属性

    loc属性:以列名 (columns) 和行名(index)作为参数,当只有一个参数时,默认是行名,即抽取整行数据,包括所有列。

    iloc属性:以行和列位置索引 (即:0,1,2...) 作为参数,0表示第一行,1表示第2行,以此类推。当只有一个参数时,默认是行索引,即抽取整行数据,包括所有列。

   6.1 创建DataFrame对象

import pandas as pd

data = [[45, 65, 100], [56, 45, 50], [67, 67, 76]]
index = ['张三', '李四', '王五']  # 行索引
columns = ['数学', '语文', '英语']  # 列索引
pd.set_option('display.unicode.east_asian_width', True)
df = pd.DataFrame(data=data, index=index, columns=columns)
print(df)

  6.2 提取行数据

print(df.loc['张三'])  # 使用行索引名称提取
print(df.iloc[0])  # 使用行索引编号提取
print(df.loc[['张三', '王五']])  # 提取多行数据
print(df.iloc[[0, 2]])  # 提取多行数据
print(df.loc['张三':'王五'])  # 切片提取多行数据,使用行索引名称顾头也顾尾
print(df.iloc[0:3])  # 使用行索引编号切片,顾头不顾尾

  6.3 提取列数据

print(df[['数学','语文']])  #直接使用列名提取
# 提取所有行和英语,语文列
print(df.loc[:, ['英语', '语文']])  #逗号左侧表示行,右侧表示列
print(df.iloc[:,[1,2]])
print(df.loc[:, '数学':])  # 提取连续的列
print(df.iloc[:, 0:])

  6.4 提取区域部分

# 提取张三的数学成绩
print(df.loc['张三', '数学'])
print(df.iloc[0, 0])

# 提取张三和王五的数学,语文成绩
print(df.loc[['张三', '王五'], ['数学', '语文']])
print(df.iloc[[0, 2], [0, 1]])

  6.5 提取指定条件的数据

# 提取语文成绩大于60的
print(df.loc[df['语文'] > 60])

# 提取语文和数学成绩都大于60的
print(df.loc[(df['语文'] > 60) & (df['数学'] > 60)])