: | : | :期货程序化 | :期货程序化研究 | :期货量化学习 | :期货量化 |
返回列表 发帖

【Pandas 教程系列】- Pandas 常用函数

【Pandas 教程系列】- Pandas 常用函数

下列出了 Pandas 常用的一些函数及使用实例:

读取数据



实例
  1. import pandas as pd

  2. # 从 CSV 文件中读取数据
  3. df = pd.read_csv('data.csv')

  4. # 从 Excel 文件中读取数据
  5. df = pd.read_excel('data.xlsx')

  6. # 从 SQL 数据库中读取数据
  7. import sqlite3
  8. conn = sqlite3.connect('database.db')
  9. df = pd.read_sql('SELECT * FROM table_name', conn)

  10. # 从 JSON 字符串中读取数据
  11. json_string = '{"name": "John", "age": 30, "city": "New York"}'
  12. df = pd.read_json(json_string)

  13. # 从 HTML 页面中读取数据
  14. url = 'https://www.runoob.com'
  15. dfs = pd.read_html(url)
  16. df = dfs[0] # 选择第一个数据框
复制代码
查看数据



实例
  1. # 显示前五行数据
  2. df.head()

  3. # 显示后五行数据
  4. df.tail()

  5. # 显示数据信息
  6. df.info()

  7. # 显示基本统计信息
  8. df.describe()

  9. # 显示数据的行数和列数
  10. df.shape
复制代码
实例
  1. import pandas as pd

  2. data = [
  3.     {"name": "Google", "likes": 25, "url": "https://www.google.com"},
  4.     {"name": "Runoob", "likes": 30, "url": "https://www.runoob.com"},
  5.     {"name": "Taobao", "likes": 35, "url": "https://www.taobao.com"}
  6. ]

  7. df = pd.DataFrame(data)
  8. # 显示前两行数据
  9. print(df.head(2))
  10. # 显示前最后一行数据
  11. print(df.tail(1))
复制代码
以上实例输出结果为:
  1.      name  likes                     url
  2. 0  Google     25  https://www.google.com
  3. 1  Runoob     30  https://www.runoob.com
  4.      name  likes                     url
  5. 2  Taobao     35  https://www.taobao.com
复制代码
数据清洗



实例
  1. # 删除包含缺失值的行或列
  2. df.dropna()

  3. # 将缺失值替换为指定的值
  4. df.fillna(0)

  5. # 将指定值替换为新值
  6. df.replace('old_value', 'new_value')

  7. # 检查是否有重复的数据
  8. df.duplicated()

  9. # 删除重复的数据
  10. df.drop_duplicates()
复制代码
数据选择和切片



实例
  1. # 选择指定的列
  2. df['column_name']

  3. # 通过标签选择数据
  4. df.loc[row_index, column_name]

  5. # 通过位置选择数据
  6. df.iloc[row_index, column_index]

  7. # 通过标签或位置选择数据
  8. df.ix[row_index, column_name]

  9. # 选择指定的列
  10. df.filter(items=['column_name1', 'column_name2'])

  11. # 选择列名匹配正则表达式的列
  12. df.filter(regex='regex')

  13. # 随机选择 n 行数据
  14. df.sample(n=5)
复制代码
数据排序



实例
  1. # 按照指定列的值排序
  2. df.sort_values('column_name')

  3. # 按照多个列的值排序
  4. df.sort_values(['column_name1', 'column_name2'], ascending=[True, False])

  5. # 按照索引排序
  6. df.sort_index()
复制代码
数据分组和聚合



实例
  1. # 按照指定列进行分组
  2. df.groupby('column_name')

  3. # 对分组后的数据进行聚合操作
  4. df.aggregate('function_name')

  5. # 生成透视表
  6. df.pivot_table(values='value', index='index_column', columns='column_name', aggfunc='function_name')
复制代码
数据合并



实例
  1. # 将多个数据框按照行或列进行合并

  2. df = pd.concat([df1, df2])

  3. # 按照指定列将两个数据框进行合并
  4. df = pd.merge(df1, df2, on='column_name')
复制代码


实例

假设我们有如下的 JSON 数据,数据保存到 data.json 文件:

data.json 文件
  1. [
  2.   {
  3.     "name": "Alice",
  4.     "age": 25,
  5.     "gender": "female",
  6.     "score": 80
  7.   },
  8.   {
  9.     "name": "Bob",
  10.     "age": null,
  11.     "gender": "male",
  12.     "score": 90
  13.   },
  14.   {
  15.     "name": "Charlie",
  16.     "age": 30,
  17.     "gender": "male",
  18.     "score": null
  19.   },
  20.   {
  21.     "name": "David",
  22.     "age": 35,
  23.     "gender": "male",
  24.     "score": 70
  25.   }
  26. ]
复制代码
我们可以使用 Pandas 读取 JSON 数据,并进行数据清洗和处理、数据选择和过滤、数据统计和描述等操作,具体如下:

实例
  1. import pandas as pd

  2. # 读取 JSON 数据
  3. df = pd.read_json('data.json')

  4. # 删除缺失值
  5. df = df.dropna()

  6. # 用指定的值填充缺失值
  7. df = df.fillna({'age': 0, 'score': 0})

  8. # 重命名列名
  9. df = df.rename(columns={'name': '姓名', 'age': '年龄', 'gender': '性别', 'score': '成绩'})

  10. # 按成绩排序
  11. df = df.sort_values(by='成绩', ascending=False)

  12. # 按性别分组并计算平均年龄和成绩
  13. grouped = df.groupby('性别').agg({'年龄': 'mean', '成绩': 'mean'})

  14. # 选择成绩大于等于90的行,并只保留姓名和成绩两列
  15. df = df.loc[df['成绩'] >= 90, ['姓名', '成绩']]

  16. # 计算每列的基本统计信息
  17. stats = df.describe()

  18. # 计算每列的平均值
  19. mean = df.mean()

  20. # 计算每列的中位数
  21. median = df.median()

  22. # 计算每列的众数
  23. mode = df.mode()

  24. # 计算每列非缺失值的数量
  25. count = df.count()
复制代码
出结果如下:
  1. # df
  2.    姓名  年龄 性别  成绩
  3. 1  Bob   0  male  90

  4. # grouped
  5.              年龄  成绩
  6. 性别               
  7. female  25.000000  80
  8. male    27.500000  80

  9. # stats
  10.          成绩
  11. count   1.0
  12. mean   90.0
  13. std     NaN
  14. min    90.0
  15. 25%    90.0
  16. 50%    90.0
  17. 75%    90.0
  18. max    90.0

  19. # mean
  20. 成绩    90.0
  21. dtype: float64

  22. # median
  23. 成绩    90.0
  24. dtype: float64

  25. # mode
  26.     姓名    成绩
  27. 0  Bob  90.0

  28. # count
  29. 姓名    1
  30. 成绩    1
  31. dtype: int64
复制代码

论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
 
期货论坛 - 版权/免责声明   1.本站发布源码(包括函数、指标、策略等)均属开放源码,用意在于让使用者学习程序化语法撰写,使用者可以任意修改语法內容并调整参数。仅限用于个人学习使用,请勿转载、滥用,严禁私自连接实盘账户交易
  2.本站发布资讯(包括文章、视频、历史记录、教材、评论、资讯、交易方案等)均系转载自网络主流媒体,内容仅为作者当日个人观点,本网转载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网不对该类信息或数据做任何保证。不对您构成任何投资建议,不能依靠信息而取代自身独立判断,不对因使用本篇文章所诉信息或观点等导致的损失承担任何责任。
  3.本站发布资源(包括书籍、杂志、文档、软件等)均从互联网搜索而来,仅供个人免费交流学习,不可用作商业用途,本站不对显示的内容承担任何责任。请在下载后24小时内删除。如果喜欢,请购买正版,谢谢合作!
  4.龙听期货论坛原创文章属本网版权作品,转载须注明来源“龙听期货论坛”,违者本网将保留追究其相关法律责任的权力。本论坛除发布原创文章外,亦致力于优秀财经文章的交流分享,部分文章推送时若未能及时与原作者取得联系并涉及版权问题时,请及时联系删除。联系方式:http://www.qhlt.cn/thread-262-1-1.html
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

返回列表