Python Pandas 详细 查看 处理 汇总

参考:https://www.runoob.com/pandas/pandas-tutorial.html

1 . 安装

	pip install pandas

2 . Series

Series 由索引(index)和列组成

pandas.Series( data, index, dtype, name, copy)
	import pandas as pd

创建

import pandas as pd
## 自动序号
print(pd.Series([3,0.5,"liucd"]))
## 手动序号
print(pd.Series(["i","ii","iii"],[3,0.5,"liucd"]))
## 字典形式
print(pd.Series({"a1":"aa","a2":"bb"}))   

读取

a=pd.Series({"a1":"aa","a2":"bb"})
print(a["a1"],a[1])   #提取

输出

3          i
0.5       ii
liucd    iii
dtype: object
aa bb

3 . DataFrame

DataFrame表格型   (行\列 &索引)

3.1 导入 csv 或 xlsx文件

	df=pd.read_csv("nba.csv")
	df1=pd.DataFrame(pd.read_csv("nba.csv",header=10))
	# df2=pd.DataFrame(pd.read_excel("名单.xlsx"))
	print(df,df1)

3.2.1 用pandas创建数据表 (一)

	df = pd.DataFrame({
	    "id":[1001,1002,1003,1004,1005,1006],
	    "date":pd.date_range('20130102', periods=6),
	    "city":['Beijing ', 'SH', ' guangzhou ', 'Shenzhen', 'shanghai', 'BEIJING '],
	    "age":[23,44,54,32,34,32],
	    "category":['100-A','100-B','110-A','110-C','210-A','130-F'],
	    "price":[1200,np.NaT,2133,5433,np.NaT,4432]},
	    columns =['id','date','city','category','age','price'])
	print(df)

3.2.1 用pandas创建数据表 (二)

	df2=pd.DataFrame([
	    [1001,"liucd",372832197612068535,65,135.5,"男","山东","高兴"],
	    [1002,"jiangdab",512750197406168531,29,120,"女","四川","高兴"],
	    [1005,"xiaonz",371321199009113651,18,98,"女","山东","高兴"],
	    [1004,"liuyh",np.NaT,15,108,"男","山东","高兴"]],
	    columns=["编号","姓名","身份证号码","年龄","体重","性别","省份","情绪"])
	print(df2)
	Id       date         city category  age price
	0  1001 2013-01-02     Beijing     100-A   23  1200
	1  1002 2013-01-03           SH    100-B   44   NaT
	2  1003 2013-01-04   guangzhou     110-A   54  2133
	3  1004 2013-01-05     Shenzhen    110-C   32  5433
	4  1005 2013-01-06     shanghai    210-A   34   NaT
	5  1006 2013-01-07     BEIJING     130-F   32  4432
	
	     编号        姓名               身份证号码  年龄     体重 性别  省份  情绪
	0  1001     liucd  372832197612068535  65  135.5  男  山东  高兴
	1  1002  jiangdab  512750197406168531  29  120.0  女  四川  高兴
	2  1005    xiaonz  371321199009113651  18   98.0  女  山东  高兴
	3  1004     liuyh                 NaT  15  108.0  男  山东  高兴

4. 查看数据表信息

4.1 查看单/多行

	print(df2.loc[3]) #竖版
	print(df2[3:4])   #横版
Index(['liucd', 'jiangdb'], dtype='object')

4.2 查看列

print(df2["姓名"])
0       liucd
1    jiangdab
2      xiaonz
3       liuyh
Name: 姓名, dtype: object

4.2 维度查看/区域查看


print("维度(行列)查看",df2.shape)
print("区域 2行 3列",df2.iloc[:2,:3])
print("区域 1,2,4行,2,5列",df2.iloc[[1,2,4],[2,5]])
	区域 2行 3列      编号        姓名               身份证号码
	0  1001     liucd  372832197612068535
	1  1002  jiangdab  512750197406168531
	区域                   身份证号码  未成年
	1    512750197406168531    N
	2    371321199009113651    Y
	new   37132120611258530  1

4.3 数据表基本信息

print("info",df2.info())

4.4 列格式

print(df2.dtypes)
print(df2["身份证号码"].dtype)

4.5 统计空值

print(df2.isnull())

4.6 查看数据表的值

print(df2.values)

4.7 查看列名称 标签

print("列标签",df2.columns)
print("单一列标签",df2.columns[2])

5 . 数据清洗

三 数据清洗

1 用数字0 填充空值

print(df2.fillna(value=0))

2 更改列名称

print(df2.rename(columns={"姓名":"性命"}))

3 数据替换

print(df2["姓名"].replace("xiaonz","xiaonz---2"))

4 清洗格式错误数据## 清洗数据格式

	df6=pd.DataFrame({
	    "日期" : ['2020/12/01', '2020/12/02', '20201226'],
	    "销售额" : [50, 30, 78]},index=["day1","day2","day3"])
	df6["日期"]=pd.to_datetime(df6["日期"])  #规范日期格式
	print(df6)
	     日期  销售额
	day1 2020-12-01   50
	day2 2020-12-02   30
	day3 2020-12-26   78

6 .数据预处理

6.1 把列作为索引/重设索引

print(df2.set_index("身份证号码"))
print(df2.reset_index())

6.2 按列 排序

print("*按列 排序*",df2.sort_values("编号"))

6.3 插入列

df2.insert(5,column="未成年",value=["Y","N","Y","Y"])
print("增加 未成年 列",df2)

6.4 插入(替换)行

df2.loc["new"]=[1008,"liuyi",37132120611258530,17,"Y",128,"男","上海","特高"]

print("增加 刘亿 行",df2)

6.5 如果年龄大于18显示 成年,否则 未成年

df3=df2.copy()
df3["未成年"][df3["年龄"]>=18]="成年"
df3["未成年"][df3["年龄"]<18]="未成年"

print("判断是否成年",df2)

6.6 多条件筛选 山东 + 体重>100 &和 | 或

bf4=df2[(df2["年龄"]<18) &(df2["省份"]=="山东")],"特别标记"
print("成年+山东",bf4)

6.7 省份满足山东

print("省份满足山东",df2[df2["省份"]=="山东"])

6.8 多条件筛选

print("提取上海和四川的",df2[df2["省份"].isin(["上海","四川"])])

7 .数据汇总

7.1 汇总

	print("数据汇总 纵向",df2["年龄"].sum())
	print("数据汇总 横向",df2.sum(axis=1))

7.2 对指定字段 汇总,例如 山东的 几个

	print(df2.groupby("省份").count())

7.3

7 .Pandas CSV

CSV   数字+文本  = 表格   逗号  分割

载入

data=pd.read_csv("nbb.csv",encoding="utf-8")
print(data)  #打印全部
print(data.to_string()) #打印全部
print(data.head(10))  #打印前十行
    姓名  年龄        省份
0    liucd  28  shandong
1  jiangdb  18   sichuan
2   xiaonz  22  shandong

创建

data1=pd.DataFrame([["liucd",28,"shandong"],["jiangdb",18,"sichuan"],["xiaonz",22,"shandong"],["哎"]],columns=["姓名","年龄","省份"])
data1.to_csv("名单.csv")  #写入
print(data1)

打印文本信息

	print(data1.info())  #相关信息
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 3 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   姓名      4 non-null      object  #多一个数字
 1   年龄      3 non-null      float64
 2   省份      3 non-null      object 
dtypes: float64(1), object(2)
memory usage: 224.0+ bytes

5. Pamdas JSON

6. Pandas 数据清洗

上一篇:搞懂Pandas数据合并,这一片就够了


下一篇:为SRS流媒体服务器添加HLS加密功能(附源码)