目录
简介背景特点:安装简介
背景
Pandas 是 Python 的一个工具库,用于数据分析。
由 AQR Capital Management 于 2008 年 4 月开发,2009 年开源,最初被作为金融数据分析工具而开发出来。
【资料图】
Pandas 名称来源于panel data(面板数据)和 Python data analysis(Python 数据分析)。
适用于金融、统计等数据分析领域。
特点:
两大数据结构
Series 和 DataFrame
(1)Series:一维数据(列+索引)
pandas.Series(["东汉", "马腾", "?", 212], index=["国家", "姓名", "出生年份", "逝世年份"])
(2)DataFrame:二维数据(表格:多个列+行/列索引)
pandas.DataFrame([ ["东汉", 300], ["魏国", 800], ["蜀国", 400], ["吴国", 600], ["西晋", 1000] ], columns=["国家", "国力"])
安装
如果你使用的是数据科学的 Python 发行版:Anaconda,可以使用 conda安装
conda install pandas
如果是普通的 Python 环境,可以使用pip安装
pip install pandas
实战
我们先看看数据长啥样,数据存在 sanguo.csv文档中
$ head sanguo.csv
(1)导入模块
import pandas as pd
(2)读取 csv 数据
# 当前目录下的 sanguo.csv 文件,na_values 指定哪些值为空 df = pd.read_csv("./sanguo.csv", na_values=["na", "-", "N/A", "?"])
1)查看数据
# 查看前 5 条 df.head(5) # NaN 为空值
# 查看后 5 条 df.tail(5)
2)查看数据概况
df.dtypes # 查看数据类型
df.info() # 有 25 行,5 列 # 各列的名称(kindom、name、birth、die、character)、非空数目、数据类型
df.describe() # 查看数值型列统计值:总数、平均值、标准差、最小值、25%/50%/75% 分位数、最大值
3)数据操作
设置列名
df.columns = ["国家", "姓名", "出生年份", "逝世年份", "角色"] df.head()
添加新列
# 计算年龄 df["年龄"] = df["逝世年份"] - df["出生年份"] df.head(10)
计算列平均值、中位数、众数、最/小值
平均值:df["年龄"].mean()
中位数:df["年龄"].median()
众数:df["年龄"].mode()
最大值:df["年龄"].max()
最小值:df["年龄"].min()
列筛选
# 筛选年轮小于 50 的数据 df[df["年龄"] < 50]
# 筛选曹姓的数据 df[df["姓名"].str.startswith("曹")]
分组
df.groupby("国家")["姓名"].count() # 类似于 SQL: SELECT 国家, COUNT(姓名) FROM x GROUP BY 国家
apply 函数
df["状态"] = df["年龄"].apply(lambda x: "长寿" if isinstance(x, (int, float)) and x > 50 else "一般") df.head()
取数据:loc、iloc
df.loc[4]
取第 5 行数据(索引从 0 开始)
df.loc[4:5]
取第 5~6 行数据
df.loc[4, "姓名"]或 df.iloc[4, 1]取第 5 行姓名列或第 5 行第 2 列
df.loc[4, ["姓名", "年龄"]]或df.iloc[4, [1, 5]]取第 5 行姓名、年龄列或第 5 行第 2 列、第 6 列
df.loc[4:5, ["姓名", "年龄"]]或 df.iloc[[4, 5], [1, 5]]或 df.iloc[4:6, [1, 5]]取第 5~6 行姓名、年龄列或取第 5~6 行第 2 列、第 6 列
df.iloc[4:9, 1:4]取 5~10 列第 2~5 列
追加、合并数据
concat
# 创建列 newpeople = pd.Series(["东汉", "马腾", "?", 212, "?"], index=["国家", "姓名", "出生年份", "逝世年份", "年龄"]) # 将 Series 转为 DataFrame,并对 DataFrame 转置(列转行) newpeople = newpeople.to_frame().T # 追加行(axis=0),重置索引(ignore_index=True) df2 = pd.concat([df, newpeople], axis=0, ignore_index=True) df2.tail()
merge
# 创建表格 kindom_power = pd.DataFrame([ ["东汉", 300], ["魏国", 800], ["蜀国", 400], ["吴国", 600], ["西晋", 1000] ], columns=["国家", "国力"]) # 按国家列进行两个表格(左 df,右 kindom_power)合并 df3 = pd.merge(left=df, right=kindom_power, on="国家") df3.head(10)
4)导出数据
# 写入 sanguo_result.csv 中,不输出索引值 df.to_csv("sanguo_result.csv", index=False)
到此这篇关于pandas实战:分析三国志人物示例实现的文章就介绍到这了,更多相关pandas实战内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?