文章目录
一、统计分析
1. 延用numpy统计分析方法
numpy中所有的统计分析方法都可以使用
此处仅举一例说明:
np.mean(df['age'])
输出:
21.0
2. 其他方法
- 极差
np.ptp(df['age'])
输出:
2
3. pandas方法
(a)针对一维类型
df['age'].min()
df['age'].std()
df['age'].argmax()
- 众数
df['age'].mode()
输出:
0 20
1 21
2 22
dtype: int64
- 非空数目
返回某一列的非空元素的数目
df['name'].count()
输出:
3
- 频数统计
df['name'].value_counts()
输出:
zs 1
lh 1
ss 1
Name: name, dtype: int64
(b)针对二维类型
二维没有argmax方法,使用idxmax(),返回最大值所在的索引
df['score']=[98,90,92]
print(df[['age','score']].idxmax()) # idxmax可加入axis,表示横(纵)向比较,默认为0
print(df[['age','score']].idxmax(axis=1))
输出:
age b
score a
dtype: object
a score
b score
c score
dtype: object
注:二维类型中没有频数统计方法,且没有替代方法。其他方法都可用于二维类型
print(df.mode())
输出:
name age gender class address score
0 lh 20 男 0831 北京 90
1 ss 21 NaN NaN NaN 92
2 zs 22 NaN NaN NaN 98
(c)重要方法
describe方法:
- 作用于数值型时,返回数据统计结果
- 作用于类别型时,返回count(非空数目)、unique(去重后有几个值)、top(众数)、freq(众数出现的频数)
- 数值型和类别型同时出现时,会自动过滤类别型,只保留数值型
- 例1:数值型
print(df[['age','score']].describe())
输出:
age score
count 3.0 3.000000
mean 21.0 93.333333
std 1.0 4.163332
min 20.0 90.000000
25% 20.5 91.000000
50% 21.0 92.000000
75% 21.5 95.000000
max 22.0 98.000000
- 例2:非数值型
print(df)
name age gender class address score
a ss 20 男 0831 北京 98
b zs 22 男 0831 北京 90
c lh 21 女 有问题 北京 92
print(df[['name','gender']].describe())
输出:
name gender
count 3 3
unique 3 2
top zs 男
freq 1 2
- 例3:非数值型与数值型同时传入会默认忽略非数值型列,只返回数值型分析结果
print(df[['age','name']].describe())
输出:
age
count 3.0
mean 21.0
std 1.0
min 20.0
25% 20.5
50% 21.0
75% 21.5
max 22.0
二、文件读取
1、Excel文件读取
基础方法
使用read_excel方法
例:
pd.read_excel('D:/qq文档/FileRecv/meal_order_detail.xlsx').head()
常用参数说明
(1)sheetname:
切换sheet表格,可以用索引,也可以用表名,多表同时读取使用列表,传入None时获取所有表格
data = pd.read_excel('D:/qq文档/FileRecv/meal_order_detail.xlsx',sheetname=1)
print(data.shape)
输出:
(3647, 19)
data = pd.read_excel('D:/qq文档/FileRecv/meal_order_detail.xlsx',sheetname=None)
print('查看当前表格中所有sheet的名称:\n',data.keys())
输出:
查看当前表格中所有sheet的名称:
odict_keys(['meal_order_detail1', 'meal_order_detail2', 'meal_order_detail3'])
(2)header:
表示选择哪一行作为列索引(表头),默认是第一行,当header不为0时,会将默认为列索引之前的行全部删掉
df = pd.read_excel('D:/qq文档/2393971222/FileRecv/meal_order_detail.xlsx',header=[0,1])
(3)names:
当文件中没有给出表头时,需要将header设置为None,并且传入与列数量一致的list,names=[ ]
pd.read_excel('D:/qq文档/2393971222/FileRecv/meal_order_detail.xlsx',names = np.arange(19)).head()
输出部分展示:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2956 | 417 | 610062 | NaN | NaN | 蒜蓉生蚝 | 0 | 1 | 49 | NaN | 2016-08-01 11:05:36 | NaN | NaN | NaN | 0 | NaN | NaN | caipu/104001.jpg | 1442 |
1 | 2958 | 417 | 609957 | NaN | NaN | 蒙古烤羊腿 | 0 | 1 | 48 | NaN | 2016-08-01 11:07:07 | NaN | NaN | NaN | 0 | NaN | NaN | caipu/202003.jpg | 1442 |
2 | 2961 | 417 | 609950 | NaN | NaN | 大蒜苋菜 | 0 | 1 | 30 | NaN | 2016-08-01 11:07:40 | NaN | NaN | NaN | 0 | NaN | NaN | caipu/303001.jpg | 1442 |
3 | 2966 | 417 | 610038 | NaN | NaN | 芝麻烤紫菜 | 0 | 1 | 25 | NaN | 2016-08-01 11:11:11 | NaN | NaN | NaN | 0 | NaN | NaN | caipu/105002.jpg | 1442 |
4 | 2968 | 417 | 610003 | NaN | NaN | 蒜香包 | 0 | 1 | 13 | NaN | 2016-08-01 11:11:30 | NaN | NaN | NaN | 0 | NaN | NaN | caipu/503002.jpg | 1442 |
(4)skiprows:
跳过传入的几行
data = pd.read_excel('D:/qq文档/FileRecv/meal_order_detail.xlsx',skiprows=[0,1])
print(data.head()) # 从头开始读,读几行传入几,默认5行
print(data.tail()) # 从尾部开始读
输出结果略
2、读取csv文件
csv属于文本文件,逗号分隔符文件,编码一般为gbk
参数说明:
- sep:元素分隔符,csv文件中默认分隔符为逗号;
- engine:底层编译方式,默认为C语言,如果遇到编码问题,可以尝试将engine改为python
order = pd.read_csv(r'D:/qq文档/FileRecv/meal_order_info.csv',sep=',',encoding='gbk',engine='python')
print(order.head())
部分结果展示:
info_id emp_id number_consumers mode dining_table_id
0 417 1442 4 NaN 1501
1 301 1095 3 NaN 1430
2 413 1147 6 NaN 1488
3 415 1166 4 NaN 1502
4 392 1094 10 NaN 1499
[5 rows x 21 columns]
read_table即可以读csv文件,也可以读excel文件,目前已经淘汰使用
pd.read_table(r'D:/qq文档/2393971222/FileRecv/meal_order_info.csv',sep=',',encoding='gbk',engine='python').head()
3、保存文件
order.to_excel('11.xlsx')
order.to_csv('11.csv')
补充内容
series构建
pd.Series(data=['lx','ss','zs'],index=[0,1,2])
输出:
0 lx
1 ss
2 zs
dtype: object