Pandas Series.str_len() 関数
Series.str.len()Pandasで文字列の長さを計算するための関数です。
データ処理の過程で、入力の長さの検証、特定の長さのテキストの抽出、テキストの長さ分布の分析など、文字列の長さ情報を把握する必要がよくあります。len()この関数は、各文字列要素の文字数を返します。
単語の意味:len「length」(長さ)の略であり、文字列の文字数を返すことを示します。
基本構文とパラメータ
str.len()はSeriesの文字列アクセサメソッドです。したがって、まず文字列を含むSeriesが必要です。次に、.strアクセサを介して呼び出します。
構文形式
Series.str.len()
パラメータの説明
- パラメータ:パラメータなし。この関数はパラメータを必要とせず、直接呼び出すことができます。
関数の説明
- 戻り値:各文字列の文字数を表す整数のSeriesを返します。
- 効果:Series内の各文字列要素の文字数(空白と特殊文字を含む)を計算します。
- 注意:非文字列要素の場合は、その文字列表現の長さを返します。
例
簡単なものから複雑なものまで、一連の例を通して、徹底的にstr.len()使い方をマスターしましょう。
例1:基本的な使い方 - 文字列の長さを計算する
例
import pandas as pd
# 異なる長さの文字列を含むSeriesを作成する
s = pd.Series(['hello', 'サンプル', 'python', 'ai', 'data'])
# str.len() を使用して各文字列の長さを計算する
result = s.str.len()
print("元のSeries:")
print(s)
print("n文字列の長さ:")
print(result)
# 異なる長さの文字列を含むSeriesを作成する
s = pd.Series(['hello', 'サンプル', 'python', 'ai', 'data'])
# str.len() を使用して各文字列の長さを計算する
result = s.str.len()
print("元のSeries:")
print(s)
print("n文字列の長さ:")
print(result)
出力結果:
原始 Series: 0 hello 1 サンプル 2 python 3 ai 4 data dtype: object 字符串长度: 0 5 1 6 2 6 3 2 4 4
コードの解説:
s.str.len()各文字列の文字数を計算します。- 'hello' は5文字なので、5を返します。
- 'サンプル' は6文字なので、6を返します。
- 空文字列は長さ0を返します。
例2:空白を含む文字列の長さ
len()空白を含むすべての文字を計算します。
例
import pandas as pd
# 空白を含むSeriesを作成する
s = pd.Series(['hello world', 'サンプル python', 'a b c', ' space '])
# 文字列の長さを計算する
result = s.str.len()
print("元のSeries:")
print(s)
print("n文字列の長さ(空白を含む):")
print(result)
# 空白を含むSeriesを作成する
s = pd.Series(['hello world', 'サンプル python', 'a b c', ' space '])
# 文字列の長さを計算する
result = s.str.len()
print("元のSeries:")
print(s)
print("n文字列の長さ(空白を含む):")
print(result)
出力結果:
原始 Series: 0 hello world 1 サンプル python 2 a b c 3 space dtype: object 字符串长度(包括空格): 0 11 1 13 2 5 3 8
コードの解説:
- 'hello world' は11文字です(中央の空白を含む)。
- ' space ' は8文字です(前後にそれぞれ2つの空白を含む)。
- 空白は文字として計算されます。
例3:特定の長さの文字列を抽出する
len()データを抽出するために、ブールインデックスと組み合わせてよく使用されます。
例
import pandas as pd
# 製品名のSeriesを作成する
products = pd.Series(['iPhone', 'Samsung Galaxy', 'MacBook Pro', 'iPad', 'Dell XPS'])
# 長さが8より大きい製品を抽出する
long_names = products[products.str.len() > 8]
# 長さが5以下の製品を抽出する
short_names = products[products.str.len() <= 5]
print("すべての製品:")
print(products)
print("n長さがより大きい8製品:")
print(long_names)
print("n長さが以下5の製品:")
print(short_names)
# 製品名のSeriesを作成する
products = pd.Series(['iPhone', 'Samsung Galaxy', 'MacBook Pro', 'iPad', 'Dell XPS'])
# 長さが8より大きい製品を抽出する
long_names = products[products.str.len() > 8]
# 長さが5以下の製品を抽出する
short_names = products[products.str.len() <= 5]
print("すべての製品:")
print(products)
print("n長さがより大きい8製品:")
print(long_names)
print("n長さが以下5の製品:")
print(short_names)
出力結果:
所有产品: 0 iPhone 1 Samsung Galaxy 2 MacBook Pro 3 iPad 4 Dell XPS dtype: object 长度大于 8 的产品: 1 Samsung Galaxy 2 MacBook Pro 4 Dell XPS dtype: object 长度小于等于 5 的产品: 0 iPhone 3 iPad dtype: object
コードの解説:
products.str.len() > 8長さが8より大きいかを示すブールSeriesを返します。- ブールインデックスを使用して、条件を満たす製品名を抽出します。
- これはデータ抽出の一般的な操作です。
例4:長さの分布を集計する
len()統計分析に使用できます。
例
import pandas as pd
# 文の長さを含むSeriesを作成する
sentences = pd.Series([
'Hello',
'Hello world',
'Pandas is powerful',
'Data science with machine learning',
'AI'
])
# 各文の長さを計算する
lengths = sentences.str.len()
print("文のリスト:")
print(sentences)
print("n各文の文字長:")
print(lengths)
print("n統計情報:")
print(f"最短の長さ: {lengths.min()}")
print(f"最長の長さ: {lengths.max()}")
print(f"平均の長さ: {lengths.mean():.2f}")
print(f"合計の長さ: {lengths.sum()}")
# 文の長さを含むSeriesを作成する
sentences = pd.Series([
'Hello',
'Hello world',
'Pandas is powerful',
'Data science with machine learning',
'AI'
])
# 各文の長さを計算する
lengths = sentences.str.len()
print("文のリスト:")
print(sentences)
print("n各文の文字長:")
print(lengths)
print("n統計情報:")
print(f"最短の長さ: {lengths.min()}")
print(f"最長の長さ: {lengths.max()}")
print(f"平均の長さ: {lengths.mean():.2f}")
print(f"合計の長さ: {lengths.sum()}")
出力結果:
句子列表: 0 Hello 1 Hello world 2 Pandas is powerful 3 Data science with machine learning 4 AI dtype: object 每个句子的字符长度: 0 5 1 11 2 18 3 29 4 2 dtype: int64 统计信息: 最短长度: 2 最长长度: 29 平均长度: 13.00 总长度: 65
コードの解説:
lengths.min()最短の文字列の長さを返します。lengths.max()最長の文字列の長さを返します。lengths.mean()平均の長さを返します。lengths.sum()合計文字数を返します。
例5:混合型データの処理
len()数値などの非文字列要素の文字列表現の長さも計算します。
例
import pandas as pd
import numpy as np
# 混合型を含むSeriesを作成する
s = pd.Series(['hello', 12345, 'サンプル', np.nan, 'py'])
# 長さを計算する
result = s.str.len()
print("元のSeries:")
print(s)
print("n文字列の長さ:")
print(result)
import numpy as np
# 混合型を含むSeriesを作成する
s = pd.Series(['hello', 12345, 'サンプル', np.nan, 'py'])
# 長さを計算する
result = s.str.len()
print("元のSeries:")
print(s)
print("n文字列の長さ:")
print(result)
出力結果:
原始 Series: 0 hello 1 12345 2 サンプル 3 NaN 4 py dtype: object 字符串长度: 0 5.0 1 5.0 2 6.0 3 NaN 4 2.0
コードの解説:
- 数値12345は文字列'12345'に変換され、長さは5になります。
- NaN値はNaNを返します(エラーにはなりません)。
- NaNはfloat型のため、戻り値はfloat型になります。
例6:splitと組み合わせて単語数を計算する
組み合わせてlen()とsplit()単語数を計算することができます。
例
import pandas as pd
# 文を含むSeriesを作成する
sentences = pd.Series([
'hello world',
'サンプル python tutorial',
'pandas data analysis',
'machine learning'
])
# まず分割してから長さを計算し、単語数を取得する
word_counts = sentences.str.split().str.len()
print("文のリスト:")
print(sentences)
print("n単語数:")
print(word_counts)
# 文を含むSeriesを作成する
sentences = pd.Series([
'hello world',
'サンプル python tutorial',
'pandas data analysis',
'machine learning'
])
# まず分割してから長さを計算し、単語数を取得する
word_counts = sentences.str.split().str.len()
print("文のリスト:")
print(sentences)
print("n単語数:")
print(word_counts)
出力結果:
句子列表: 0 hello world 1 サンプル python tutorial 2 pandas data analysis 3 machine learning dtype: object 单词数量: 0 2 1 3 2 3 3 2 dtype: int64
コードの解説:
str.split()文を単語のリストに分割します。.str.len()リストの長さ(つまり単語数)を計算します。- これはテキストの単語数を集計するときに非常に便利です。
注意事項
str.len()計算されるのは文字数であり、バイト数ではありません。- 中国語の文字の場合、各漢字は1文字として数えられます。
- 空白、タブ文字などの特殊文字も計算に含まれます。
- SeriesにNaN値が含まれる場合、NaNを返します(エラーにはなりません)。
- 非文字列要素(数値など)の場合は、まず文字列に変換してから長さを計算します。
- この関数は新しいSeriesを返し、元のデータは変更されません。
その他の拡張
Pandas よく使う関数