DataFrame常见操作_获取数据
DataFrame是Pandas库中最重要的数据结构之一,它类似于Excel表格或SQL表。因此在我做数据分析的过程中频繁用到,基于此,整理了一些平时的笔记文档用于初学者。后续会持续更新,有错误欢迎各位小伙伴指正。
目录
- DataFrame常见操作_获取数据
- 一、创建DataFrame
- 二、DataFrame的属性和方法
- 三、数据选择与操作
一、创建DataFrame
- 从列表或数组创建
import pandas as pd
# 将列表转化为DataFrame
my_list = [1, 2, 3, 4, 5]
df_from_list = pd.DataFrame(my_list, columns=['Column_name'])
# 将数组转化为DataFrame
my_array = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
df_from_array = pd.DataFrame(my_array, columns=['Column1', 'Column2', 'Column3'])
print(df_from_list)
print(df_from_array)
'''
Column_name
0 1
1 2
2 3
3 4
4 5
Column1 Column2 Column3
0 1 2 3
1 4 5 6
2 7 8 9
'''
- 从字典创建
import pandas as pd
# 定义一个字典
data = {'名称': ['苹果', '香蕉', '橙子'],
'价格': [5, 3, 2],
'数量': [10, 8, 15]}
# 将字典转换为DataFrame
df = pd.DataFrame(data)
# 打印结果
print(df)
'''
名称 价格 数量
0 苹果 5 10
1 香蕉 3 8
2 橙子 2 15
'''
- 从文件(csv、Excel等)创建
用python读取excel文件
import pandas as pd
# 读取xls文件
df_season = pd.read_excel('D:/google/Download/门店数据.xls')
df_season.head()
# 读取xlsx文件
df_shop_data = pd.read_excel('D:/google/Download/门店数据.xlsx')
df_shop_data.head()
# 读取csv文件
df_shop_data = pd.read_excel('D:/google/Download/门店数据.csv')
df_shop_data.head()
'''
订单门店 Column1 Column2 Column3 Column4
0 白云保利店 238 4 279 0
1 白云广场店 502 3 580 2
2 百汇广场店 752 1 826 1
3 百胜店 518 0 555 0
4 百信广场店 508 0 558 1
'''
- 从数据库创建
用python读取MySQL数据库
import pymysql
# 创建MySQL数据库连接
'''
host:数据库地址
uesr:用户名
password:密码
database:数据库名
port:端口
'''
db = pymysql.connect(
host="host",
user="user",
password="password",
database="database",
port=port)
# 创建cursor对象
cursor = db.cursor()
# 写查询的sql,\表示换行
select_sql = "SELECT *\
FROM my_table\
where id >= 100\
limit 100"
# 执行sql
cursor.execute(select_sql)
result = cursor.fetchall()
# 打印每一行数据
for row in result:
print(row)
# 关闭cursor和连接
cursor.close()
db.close()
二、DataFrame的属性和方法
- head():返回DataFrame的前几行,默认为前5行
import pandas as pd
# 读取csv文件
df_shop_data = pd.read_excel('D:/google/Download/门店数据.csv')
# 返回文件的前五行
df_shop_data.head() #df_shop_data.head(7)
'''
订单门店 Column1 Column2 Column3 Column4
0 白云保利店 238 4 279 0
1 白云凯德广场店 502 3 580 2
2 百汇广场店 752 1 826 1
3 百胜店 518 0 555 0
4 百信广场店 508 0 558 1
'''
- tail():返回DataFrame的最后几行,默认为后5行
import pandas as pd
# 读取csv文件
df_shop_data = pd.read_excel('D:/google/Download/门店数据.csv')
# 返回文件的后7行
df_shop_data.tail(7)
'''
订单门店 Column1 Column2 Column3 Column4
196 中华广场店 873 1 979 1
197 中环店 1821 4 1985 2
198 中建店 680 2 772 2
199 卓为城店 218 3 256 0
200 怡丰店 508 0 556 0
201 寮步广场店 642 0 672 0
202 星城国际店 903 0 945 0
'''
- shape:返回DataFrame的行数和列数 columns:返回DataFrame的列名
import pandas as pd
# 读取csv文件
df_shop_data = pd.read_excel('D:/google/Download/门店数据.csv')
# 返回数据的行列数
df_shop_data.shape
'''
(203, 5)
'''
- dtypes:返回DataFrame的每列的数据类型 info():返回DataFrame的基本信息,包括列名、非空值数量、数据类型等
import pandas as pd
# 读取csv文件
df_shop_data = pd.read_excel('D:/google/Download/门店数据.csv')
# 返回DataFrame的基本信息
df_shop_data.info()
'''
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 203 entries, 0 to 202
Data columns (total 5 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 订单门店 203 non-null object
1 Column1 203 non-null int64
2 Column2 203 non-null int64
3 Column3 203 non-null int64
4 Column4 203 non-null int64
dtypes: int64(4), object(1)
memory usage: 8.1+ KB
'''
- describe():返回DataFrame每列的统计摘要(平均值、标准差、最小值、最大值等)
import pandas as pd
# 读取csv文件
df_shop_data = pd.read_excel('D:/google/Download/门店数据.csv')
# 返回DataFrame的统计值
df_shop_data.describe()
'''
Column1 Column2 Column3 Column4
count 203.000000 203.000000 203.000000 203.000000
mean 670.536946 1.285714 745.935961 0.862069
std 269.321484 1.363289 294.097261 1.039178
min 16.000000 0.000000 15.000000 0.000000
25% 497.000000 0.000000 552.000000 0.000000
50% 654.000000 1.000000 742.000000 1.000000
75% 811.000000 2.000000 903.000000 1.000000
max 1821.000000 6.000000 2018.000000 6.000000
'''
- values:返回DataFrame的值(不包括索引和列名)
import pandas as pd
# 读取csv文件
df_shop_data = pd.read_excel('D:/google/Download/门店数据.csv')
# 返回DataFrame的值
df_shop_data.values
'''
array([['白云保利店', 238, 4, 279, 0],
['白云广场店', 502, 3, 580, 2],
['百汇广场店', 752, 1, 826, 1],
...,
['怡丰店', 508, 0, 556, 0],
['寮步广场店', 642, 0, 672, 0],
['星城国际店', 903, 0, 945, 0]], dtype=object)
'''
三、数据选择与操作
- 选择列:使用列名、使用loc[]和iloc[]方法
# 获取列
Column = df_shop_data['Column1']
print(Column)
'''
0 238
1 502
2 752
3 518
4 508
...
198 680
199 218
200 508
201 642
202 903
Name: Column1, Length: 203, dtype: int64
'''
#loc[]是根据index来索引
#使用loc[]获取列,获取订单门店列的第123,23行
loc_Result = df_shop_data.loc[[123,23],'订单门店']
print(loc_Result)
'''
123 豪苑店
23 陈文店
Name: 订单门店, dtype: object
'''
#使用iloc[]是integer loc[],根据行号来索引
#使用iloc[]获取列,获取订单门店列的第123,23行
iloc_Result = df_shop_data.iloc[[123,23],0]
print(iloc_Result)
'''
123 豪苑店
23 陈文店
Name: 订单门店, dtype: object
'''
- 选择行:使用loc[]和iloc[]方法
#loc[]是根据index来索引
#使用loc[]获取行,获取订单门店列的第123,23行
loc_Result = df_shop_data.loc[[123,23],'订单门店']
print(loc_Result)
'''
123 豪苑店
23 陈文店
Name: 订单门店, dtype: object
'''
#使用iloc[]是integer loc[],根据行号来索引
#使用iloc[]获取行,获取订单门店列的第123行
iloc_Result = df_shop_data.iloc[123,:]
print(iloc_Result)
'''
订单门店 豪苑店
Column1 859
Column2 2
Column3 927
Column4 1
Name: 123, dtype: object
'''
#当然,也可以直接获取行,例如获取前两行
#值得注意的是,第一行从0开始,且索引不包括右括号,所以要用[0,2]表示第一、二行
Row = df_shop_data[0:2]
print(Row)
'''
订单门店 Column1 Column2 Column3 Column4
0 白云保利店 238 4 279 0
1 白云广场店 502 3 580 2
'''
- 条件筛选:使用布尔索引
#使用条件筛选获取数据
condition_df = df_shop_data[df_shop_data['Column1']>1300]
print(condition_df)
'''
订单门店 Column1 Column2 Column3 Column4
7 保利店 1812 1 2018 1
22 陈文店 1424 2 1541 2
'''