初学pandas与seaborn(五)pandas…

本文提供了一次初学者使用pandas和seaborn进行数据分析的实践体验,通过处理100列x100,000行的大规模样例数据,展示了这两个库在数据处理和可视化方面的基本应用。" 125339375,10912945,R语言dplyr包select函数:筛选以特定字符串结尾的数据列,"['R语言', '数据挖掘', '数据分析']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

查的问题
  pandas的逻辑筛选功能还是蛮简洁流畅的,直接在方括号里输入逻辑运算符,即可进行
   栏目筛选:
  resultData[ resultData['true'] == False]
  在名叫true的这一列查询等于False布尔值的行,即从600多万条里面筛选出“必输”状态的行,花费了:
   0.170 sec
  一开始我选择输入带引号的——'False' 结果给我显示查找出错。原来pandas自动把字符串转换成boolean类型了。所以直接用python的布尔变量就可以。
   批量单元格对比逻辑运算:
  df. gt(df2)
  df2. ne(df)
  查询中可能会用到的一些比较关键字:
 eq == equal to
 ne != not equal to
 lt <</td> less than
 le <= less than or equal to
 gt > greater than
 ge >= greater than or equal to
  查找 全部满足括号内的 条件的列
  print (df > 0).all()
  查找 部分满足括号内的 条件的列
  print (df > 0).any()
   查询是否为空:
  df.empty
   相同值统计(直方图):
  例如,随机生成1到7的10个数据:s = pd.Series(np.random.randint(0, 7, size=10))
  s.value_counts()           然后统计重复的个数



   df3 = df2.copy()
  使用DataFrame里面的copy命令,会整个替换掉原来的数据,而不是只单纯更新对应的行和列。比如之前的df2是10行5列的,而df是10行4列的。当运用语句 df2 = df.copy()的时候,df2就完完全全变成了df2。其实不需要指针能进行垃圾回收的语言都有类似的性质,就是除了基本元素外,其余所有的变量都是引用。所以,要不能单纯的使用 df2 =df,因为这样当更改了df2的内容后,df的内容也会同步更改,2者是相互间的引用。想新建一个数据,得进行copy复制,这样才会新开一个完全不一样的内存空间。
   修改列,给数据新加一列也很简单,直接指定那一列叫啥,没有就创建,有的话就覆盖:
  df2[ 'E'] = ['one', 'one', 'two', 'three', 'four', 'two', 'three', 'four', 'three', 'three']
或者df2.loc[ : 'B'] = np.array([5] * len(df))
   修改行,把第四行对应的A、B、C、D列对应改成1、2、3、4:
  df2.iloc[ 3, :] = [1, 2, 3, 4]
   修改单元【标签】:
  df.at[ dates[0], 'A'] = 0
   修改单元【序号】:
  df.iat[ 0, 1] = 0
   条件修改【批量】:
  df2[df2 > 0] = -df2
   删除列
  del df3['D']
   修改字符串大小写:
  例如数据:s = pd.Series(['A', 'B', 'C', 'Aaba', 'Baca', np.nan, 'CABA', 'dog', 'cat'])
  s.str.lower()




DataFrame(数据帧)的2种相加法则:
   排除NaN的加法:
  df + df2
   将NaN视为0的加法:
  df. add(df2, fill_value=0)

完整测试代码:
dates = ['a', 'b', 'c', 'd']
df = pd.DataFrame(np.random.randn(4, 3), index=dates, columns=list('ABC'))
print df
df2 = df[df < 0].copy()
print df2
print (df + df2)
print (df.add(df2, fill_value=0))

这是一些计算样例数据(使用 100 列 x 100,000 行的 DataFrames):

操作 0.11.0 (ms) Prior Version (ms) Ratio to Prior
df1 df2 13.32 125.35 0.1063
df1 df2 21.71 36.63 0.5928
df1 df2 22.04 36.50 0.6039


对NaN的处理:
  添加一两个NaN空列?:
  df1 = df.reindex(index=dates[0:4], columns=['F']+list(df.columns) + ['E'])
  (解读:用原来的index来做行标,用原来的列加上F、E列,生成一个新表赋值给df1)
   丢弃包含NaN的行:
  df1.dropna(how='any')
   用指定值填充NaN:
  df1.fillna(value=5)
  指出表中的NaN并标记为True:
  pd.isnull(df1)

数值处理:
  算出每列的平均值:
  df.mean()
  算出指定行的平均值:
  df.mean(1) ——————这是第几行来着?









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值